@doubao-dev/plugin-app-dev 0.0.0-stage → 0.0.40-canary-dea0ddc73-20261026073950

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/README.md +10 -2
  2. package/dist/147.js +9 -0
  3. package/dist/assets.d.ts +5 -0
  4. package/dist/assets.js +4 -0
  5. package/dist/index.d.ts +43 -0
  6. package/dist/index.js +1378 -0
  7. package/dist/plugin.d.ts +102 -0
  8. package/dist/plugin.js +4995 -0
  9. package/dist/preview.js +16 -0
  10. package/dist/rslib-runtime.js +33 -0
  11. package/dist/skills/doubao-plugin-app/SKILL.md +21 -0
  12. package/dist/skills/doubao-plugin-app/references/app-development.md +85 -0
  13. package/dist/skills/doubao-plugin-app/references/frontend/components/container-overlay.md +131 -0
  14. package/dist/skills/doubao-plugin-app/references/frontend/components/form-controls.md +146 -0
  15. package/dist/skills/doubao-plugin-app/references/frontend/components/interactive-controls.md +120 -0
  16. package/dist/skills/doubao-plugin-app/references/frontend/components/map-canvas.md +107 -0
  17. package/dist/skills/doubao-plugin-app/references/frontend/components/overview.md +43 -0
  18. package/dist/skills/doubao-plugin-app/references/frontend/components/scroll-list.md +149 -0
  19. package/dist/skills/doubao-plugin-app/references/frontend/components/text-media.md +209 -0
  20. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/01-/345/237/272/347/241/200.md +1389 -0
  21. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/02-/347/263/273/347/273/237.md +1376 -0
  22. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/03-/350/207/252/345/256/232/344/271/211/351/200/232/344/277/241.md +127 -0
  23. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/04-/345/256/232/344/275/215.md +784 -0
  24. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/05-/345/255/230/345/202/250.md +1176 -0
  25. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/06-/350/267/257/347/224/261.md +839 -0
  26. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/07-/347/225/214/351/235/242.md +376 -0
  27. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/08-/344/272/244/344/272/222.md +1319 -0
  28. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/09-/350/276/223/345/205/245.md +192 -0
  29. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/10-/347/275/221/347/273/234.md +900 -0
  30. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/11-/345/252/222/344/275/223.md +1496 -0
  31. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/12-/344/270/232/345/212/241/350/203/275/345/212/233.md +1281 -0
  32. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/13-/347/231/273/345/275/225.md +511 -0
  33. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/14-/346/224/257/344/273/230.md +943 -0
  34. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/15-/346/225/260/346/215/256/345/210/206/346/236/220.md +124 -0
  35. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/16-/350/223/235/347/211/231.md +3364 -0
  36. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/17-wi-fi.md +1028 -0
  37. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/18-/345/212/240/351/200/237/345/272/246/350/256/241.md +354 -0
  38. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/19-ibeacon.md +508 -0
  39. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/20-/347/275/227/347/233/230.md +320 -0
  40. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/21-/350/256/276/345/244/207/346/226/271/345/220/221.md +351 -0
  41. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/22-/351/231/200/350/236/272/344/273/252.md +354 -0
  42. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/23-/345/252/222/344/275/223-/350/256/276/345/244/207-/347/275/221/347/273/234.md +264 -0
  43. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/24-/347/237/255/344/277/241.md +155 -0
  44. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/25-/346/227/240/351/232/234/347/242/215.md +144 -0
  45. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/26-/345/237/272/347/241/200/344/277/241/346/201/257.md +238 -0
  46. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/27-/347/224/265/346/261/240.md +235 -0
  47. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/28-/345/211/252/350/264/264/346/235/277.md +303 -0
  48. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/29-/345/212/240/345/257/206.md +126 -0
  49. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/30-/346/227/245/345/216/206.md +417 -0
  50. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/31-/347/224/265/350/257/235.md +144 -0
  51. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/32-/346/211/253/347/240/201.md +236 -0
  52. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/33-/345/261/217/345/271/225.md +747 -0
  53. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/34-/351/234/207/345/212/250.md +277 -0
  54. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/35-/346/226/207/344/273/266/347/263/273/347/273/237.md +431 -0
  55. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/common-errors.md +69 -0
  56. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/groups.md +43 -0
  57. package/dist/skills/doubao-plugin-app/references/frontend/doubao-agentic-service-api/quick-reference.md +436 -0
  58. package/dist/skills/doubao-plugin-app/references/frontend/examples/common-patterns.md +590 -0
  59. package/dist/skills/doubao-plugin-app/references/frontend/examples/doubao-agentic-service-api-recipes.md +209 -0
  60. package/dist/skills/doubao-plugin-app/references/frontend/examples/page-widget-basics.md +368 -0
  61. package/dist/skills/doubao-plugin-app/references/frontend/examples/page-widget-recipes.md +65 -0
  62. package/dist/skills/doubao-plugin-app/references/frontend/framework/core.md +283 -0
  63. package/dist/skills/doubao-plugin-app/references/frontend/guides/auth.md +277 -0
  64. package/dist/skills/doubao-plugin-app/references/frontend/guides/best-practices.md +574 -0
  65. package/dist/skills/doubao-plugin-app/references/frontend/guides/client-tools-and-events.md +209 -0
  66. package/dist/skills/doubao-plugin-app/references/frontend/guides/component-development.md +832 -0
  67. package/dist/skills/doubao-plugin-app/references/frontend/guides/debugger-mcp.md +537 -0
  68. package/dist/skills/doubao-plugin-app/references/frontend/guides/expired-widget.md +101 -0
  69. package/dist/skills/doubao-plugin-app/references/frontend/guides/performance-optimization.md +417 -0
  70. package/dist/skills/doubao-plugin-app/references/frontend/guides/troubleshooting.md +278 -0
  71. package/dist/skills/doubao-plugin-app/references/frontend/lynx/best-practices.md +720 -0
  72. package/dist/skills/doubao-plugin-app/references/frontend/lynx/css/pseudo-classes.md +149 -0
  73. package/dist/skills/doubao-plugin-app/references/frontend/lynx/css/selectors.md +224 -0
  74. package/dist/skills/doubao-plugin-app/references/frontend/lynx/css/supported-properties.md +269 -0
  75. package/dist/skills/doubao-plugin-app/references/frontend/lynx/css/values-and-units.md +314 -0
  76. package/dist/skills/doubao-plugin-app/references/frontend/lynx/layout/flex-layout.md +334 -0
  77. package/dist/skills/doubao-plugin-app/references/frontend/lynx/layout/grid-layout.md +408 -0
  78. package/dist/skills/doubao-plugin-app/references/frontend/lynx/layout/linear-layout.md +355 -0
  79. package/dist/skills/doubao-plugin-app/references/frontend/lynx/layout/relative-layout.md +189 -0
  80. package/dist/skills/doubao-plugin-app/references/frontend/lynx/lynx-vs-web/css-differences.md +737 -0
  81. package/dist/skills/doubao-plugin-app/references/frontend/lynx/lynx-vs-web/migration-guide.md +669 -0
  82. package/dist/skills/doubao-plugin-app/references/frontend/lynx/lynx-vs-web/unsupported-features.md +290 -0
  83. package/dist/skills/doubao-plugin-app/references/frontend/lynx/overview.md +60 -0
  84. package/dist/skills/doubao-plugin-app/references/frontend/lynx/patterns/animation.md +243 -0
  85. package/dist/skills/doubao-plugin-app/references/frontend/lynx/patterns/responsive.md +194 -0
  86. package/dist/skills/doubao-plugin-app/references/frontend/lynx/patterns/theming.md +143 -0
  87. package/dist/skills/doubao-plugin-app/references/frontend/lynx/quick-reference.md +229 -0
  88. package/dist/skills/doubao-plugin-app/references/frontend/rules/dos-and-donts.md +479 -0
  89. package/dist/skills/doubao-plugin-app/references/frontend/widget-templates/design-boundary.md +46 -0
  90. package/dist/skills/doubao-plugin-app/references/frontend/widget-templates/overview.md +118 -0
  91. package/dist/skills/doubao-plugin-app/references/frontend/widget-templates/props.md +301 -0
  92. package/dist/skills/doubao-plugin-app/references/mcp-and-cards.md +38 -0
  93. package/dist/templates/README.md.template +11 -0
  94. package/dist/templates/com.doubao/app/manifest.yaml +41 -0
  95. package/dist/templates/com.doubao/app/package.json.template +13 -0
  96. package/dist/templates/com.doubao/app/src/app.config.ts.template +5 -0
  97. package/dist/templates/com.doubao/app/src/app.ts.template +3 -0
  98. package/dist/templates/com.doubao/app/src/pages/home/index.css +14 -0
  99. package/dist/templates/com.doubao/app/src/pages/home/index.tsx.template +14 -0
  100. package/dist/templates/com.doubao/app/src/widgets/example/index.tsx.template +29 -0
  101. package/dist/templates/com.doubao/app/tsconfig.json +19 -0
  102. package/dist/templates/mcp.json +9 -0
  103. package/dist/templates/plugin.json.template +29 -0
  104. package/dist/templates/skills/example/SKILL.md.template +14 -0
  105. package/dist/upload.d.ts +44 -0
  106. package/dist/upload.js +38 -0
  107. package/package.json +60 -3
@@ -0,0 +1,149 @@
1
+ # 伪类和伪元素
2
+
3
+ Lynx 支持的伪类和伪元素。
4
+
5
+ ## 伪类
6
+
7
+ ### 状态伪类
8
+
9
+ #### :active
10
+
11
+ 元素被点击时的状态。
12
+
13
+ ```css
14
+ .button:active {
15
+ opacity: 0.8;
16
+ transform: scale(0.98);
17
+ }
18
+ ```
19
+
20
+ #### :focus
21
+
22
+ 元素获得焦点时的状态。
23
+
24
+ ```css
25
+ input:focus {
26
+ border-color: #ff351a;
27
+ }
28
+ ```
29
+
30
+ #### :hover
31
+
32
+ 鼠标悬停状态(部分平台支持)。
33
+
34
+ ```css
35
+ .button:hover {
36
+ background-color: #e63016;
37
+ }
38
+ ```
39
+
40
+ > **注意**:`:disabled` 和 `:enabled` 虽能被 CSS 解析器识别,但 Lynx 的 DOM 层并未实现这些伪类的匹配逻辑,因此实际上无法使用。建议通过添加/移除 class 来实现禁用样式。
41
+ >
42
+ > ```css
43
+ > /* 推荐做法 */
44
+ > .button.disabled {
45
+ > opacity: 0.5;
46
+ > background-color: #ccc;
47
+ > }
48
+ > ```
49
+
50
+ ### 否定伪类
51
+
52
+ #### :not()
53
+
54
+ 排除选择器。
55
+
56
+ ```css
57
+ /* 排除特定类 */
58
+ .item:not(.exclude) {
59
+ color: black;
60
+ }
61
+ ```
62
+
63
+ ## 伪元素
64
+
65
+ > **注意**:`::before` 和 `::after` **不支持**。虽然 CSS 解析器可以识别这些伪元素,但选择器匹配器和渲染引擎并未实现它们,使用它们不会有任何效果。
66
+
67
+ ### ::placeholder
68
+
69
+ 输入框占位符样式。
70
+
71
+ ```css
72
+ input::placeholder {
73
+ color: #999;
74
+ font-size: 14px;
75
+ }
76
+ ```
77
+
78
+ ### ::selection
79
+
80
+ 选中文本的样式。
81
+
82
+ ```css
83
+ ::selection {
84
+ background-color: #1890ff;
85
+ color: #fff;
86
+ }
87
+ ```
88
+
89
+ ## 使用示例
90
+
91
+ ### 按钮状态
92
+
93
+ ```css
94
+ .button {
95
+ background-color: #ff351a;
96
+ color: #fff;
97
+ padding: 12px 24px;
98
+ }
99
+
100
+ /* 点击效果 */
101
+ .button:active {
102
+ background-color: #e63016;
103
+ transform: scale(0.98);
104
+ }
105
+
106
+ /* 禁用状态 - 使用 class 实现 */
107
+ .button.disabled {
108
+ background-color: #ccc;
109
+ opacity: 0.6;
110
+ }
111
+ ```
112
+
113
+ ### 表单输入
114
+
115
+ ```css
116
+ .input {
117
+ border: 1px solid #ddd;
118
+ padding: 8px 12px;
119
+ }
120
+
121
+ /* 聚焦状态 */
122
+ .input:focus {
123
+ border-color: #ff351a;
124
+ outline: none;
125
+ }
126
+
127
+ /* 占位符样式 */
128
+ .input::placeholder {
129
+ color: #999;
130
+ }
131
+ ```
132
+
133
+ ## 不支持的伪类/伪元素
134
+
135
+ - ❌ `:first-child` / `:last-child` / `:nth-child()` - 结构伪类
136
+ - ❌ `:nth-of-type()` / `:only-child` / `:empty` - 结构伪类
137
+ - ❌ `:is()` - 较新的选择器
138
+ - ❌ `:where()` - 较新的选择器
139
+ - ❌ `:has()` - 父选择器
140
+ - ❌ `:target` - 目标伪类
141
+ - ❌ `:disabled` / `:enabled` - 表单状态(虽能解析但无法匹配)
142
+ - ❌ `:checked` - 表单选中状态(虽能解析但无法匹配)
143
+ - ❌ `:valid`, `:invalid` - 表单验证
144
+ - ❌ `:required`, `:optional`
145
+ - ❌ `::before` / `::after` - 伪元素(不支持)
146
+ - ❌ `::first-line` - 首行
147
+ - ❌ `::first-letter` - 首字母
148
+
149
+ **注意**: 以上标记为 ❌ 的伪类和伪元素均不支持。
@@ -0,0 +1,224 @@
1
+ # CSS 选择器
2
+
3
+ Lynx 支持大部分常用的 CSS 选择器。
4
+
5
+ ## 基本选择器
6
+
7
+ ### 标签选择器
8
+
9
+ ```css
10
+ view {
11
+ background-color: #fff;
12
+ }
13
+
14
+ text {
15
+ color: #333;
16
+ }
17
+
18
+ image {
19
+ border-radius: 8px;
20
+ }
21
+ ```
22
+
23
+ ### 类选择器
24
+
25
+ ```css
26
+ .container {
27
+ padding: 16px;
28
+ }
29
+
30
+ .button-primary {
31
+ background-color: #ff351a;
32
+ color: #fff;
33
+ }
34
+ ```
35
+
36
+ ### ID 选择器
37
+
38
+ ```css
39
+ #header {
40
+ position: sticky;
41
+ top: 0;
42
+ }
43
+
44
+ #main-content {
45
+ flex: 1;
46
+ }
47
+ ```
48
+
49
+ ### 通用选择器
50
+
51
+ ```css
52
+ * {
53
+ box-sizing: border-box;
54
+ }
55
+ ```
56
+
57
+ ## 组合选择器
58
+
59
+ ### 后代选择器
60
+
61
+ ```css
62
+ .container .item {
63
+ /* 选择 .container 内的所有 .item */
64
+ margin-bottom: 12px;
65
+ }
66
+ ```
67
+
68
+ ### 子选择器
69
+
70
+ ```css
71
+ .list > .list-item {
72
+ /* 选择直接子元素 */
73
+ border-bottom: 1px solid #eee;
74
+ }
75
+ ```
76
+
77
+ ### 相邻兄弟选择器
78
+
79
+ ```css
80
+ .title + .subtitle {
81
+ /* 紧跟在 .title 后面的 .subtitle */
82
+ margin-top: 8px;
83
+ }
84
+ ```
85
+
86
+ ### 通用兄弟选择器
87
+
88
+ ```css
89
+ .header ~ .content {
90
+ /* .header 后面的所有 .content */
91
+ padding-top: 16px;
92
+ }
93
+ ```
94
+
95
+ ### 群组选择器
96
+
97
+ ```css
98
+ h1,
99
+ h2,
100
+ h3 {
101
+ font-weight: bold;
102
+ }
103
+ ```
104
+
105
+ ## 属性选择器
106
+
107
+ ```css
108
+ /* 有该属性 */
109
+ [disabled] {
110
+ opacity: 0.5;
111
+ }
112
+
113
+ /* 精确匹配 */
114
+ [type='text'] {
115
+ border: 1px solid #ccc;
116
+ }
117
+
118
+ /* 包含某值(部分支持) */
119
+ [class*='active'] {
120
+ color: red;
121
+ }
122
+ ```
123
+
124
+ > **注意**:`[class~='val']`(空格分隔的值列表匹配)不被支持。请使用 `[class*='val']`(子串匹配)代替。
125
+
126
+ ## 伪类
127
+
128
+ ### 状态伪类
129
+
130
+ ```css
131
+ /* 点击状态 */
132
+ :active
133
+
134
+ /* 聚焦状态 */
135
+ :focus
136
+
137
+ /* 悬停状态(部分平台支持) */
138
+ :hover
139
+
140
+ /* 根元素 */
141
+ :root
142
+ ```
143
+
144
+ > **注意**:`:disabled` 和 `:enabled` 虽能被 CSS 解析器识别,但 Lynx 的 DOM 层并未实现这些伪类的匹配逻辑,因此实际上无法使用。建议通过添加/移除 class 来实现禁用样式。
145
+ >
146
+ > ```css
147
+ > /* 推荐做法 */
148
+ > .button.disabled {
149
+ > opacity: 0.5;
150
+ > background-color: #ccc;
151
+ > }
152
+ > ```
153
+
154
+ ### 否定伪类
155
+
156
+ ```css
157
+ /* 排除某些元素 */
158
+ :not(.exclude) {
159
+ /* 选择没有 .exclude 类的元素 */
160
+ }
161
+
162
+ .item:not(:last-child) {
163
+ /* 选择非最后一个的 .item */
164
+ border-bottom: 1px solid #eee;
165
+ }
166
+ ```
167
+
168
+ ## 伪元素
169
+
170
+ ```css
171
+ /* 输入框 placeholder */
172
+ input::placeholder {
173
+ color: #999;
174
+ }
175
+
176
+ /* 选中文本 */
177
+ ::selection {
178
+ background-color: #1890ff;
179
+ color: #fff;
180
+ }
181
+ ```
182
+
183
+ > **注意**:`::before` 和 `::after` **不支持**。虽然 CSS 解析器可以识别这些伪元素,但选择器匹配器和渲染引擎并未实现它们,使用它们不会有任何效果。
184
+
185
+ ## 选择器优先级
186
+
187
+ 优先级从高到低:
188
+
189
+ 1. **内联样式** - `style="..."`(最高)
190
+ 2. **ID 选择器** - `#id`
191
+ 3. **类/属性/伪类** - `.class`, `[attr]`, `:hover`
192
+ 4. **标签** - `tag`
193
+ 5. **通用选择器** - `*`(最低)
194
+
195
+ ### 计算示例
196
+
197
+ ```css
198
+ /* 0-1-0-1 = 101 */
199
+ #nav .menu {
200
+ }
201
+
202
+ /* 0-0-2-1 = 21 */
203
+ .nav .menu-item {
204
+ }
205
+
206
+ /* 0-0-1-2 = 12 */
207
+ .nav a:hover {
208
+ }
209
+ ```
210
+
211
+ ## 选择器限制
212
+
213
+ 不支持的选择器:
214
+
215
+ - ❌ `:is()` - 较新的选择器
216
+ - ❌ `:where()` - 较新的选择器
217
+ - ❌ `:has()` - 较新的选择器
218
+ - ❌ `:first-child` / `:last-child` / `:nth-child()` - 结构伪类
219
+ - ❌ `:nth-of-type()` / `:only-child` / `:empty` - 结构伪类
220
+ - ❌ `:disabled` / `:enabled` - 表单状态伪类(不支持)
221
+ - ❌ `::before` / `::after` - 伪元素(不支持)
222
+ - ❌ 复杂属性选择器如 `[attr~="val"]`(空格分隔列表匹配)
223
+
224
+ **注意**: 以上标记为 ❌ 的选择器均不支持。
@@ -0,0 +1,269 @@
1
+ # 支持的 CSS 属性
2
+
3
+ Lynx 支持大部分常用的 CSS 属性,同时也有一些 Lynx 特有的扩展。
4
+
5
+ ## 布局属性
6
+
7
+ ### Display
8
+
9
+ | 值 | 说明 | 版本 |
10
+ | ------------------- | -------------------------------- | ---- |
11
+ | `display: none` | 隐藏元素 | 1.0 |
12
+ | `display: flex` | Flexbox 布局 | 1.0 |
13
+ | `display: grid` | Grid 布局 | 1.0 |
14
+ | `display: linear` | Linear 布局(Lynx 特有,默认) | 1.0 |
15
+ | `display: relative` | Relative 布局(Lynx 特有) | 2.0 |
16
+ | `display: block` | Block 布局(回退到 Flex/Linear) | 2.0 |
17
+ | `display: auto` | 自动选择布局 | 2.0 |
18
+
19
+ ### Flex 相关
20
+
21
+ - `flex-direction`
22
+ - `flex-wrap`
23
+ - `flex-flow` - 简写属性
24
+ - `justify-content`
25
+ - `align-items`
26
+ - `align-self`
27
+ - `align-content`
28
+ - `flex-grow`
29
+ - `flex-shrink`
30
+ - `flex-basis`
31
+ - `flex`(简写)
32
+ - `order`
33
+ - `gap`, `row-gap`, `column-gap`
34
+
35
+ ### Grid 相关
36
+
37
+ - `grid-template-columns`
38
+ - `grid-template-rows`
39
+ - `grid-auto-columns`
40
+ - `grid-auto-rows`
41
+ - `grid-column-start`, `grid-column-end`
42
+ - `grid-row-start`, `grid-row-end`
43
+ - `grid-column-span`, `grid-row-span` - Lynx 特有
44
+ - `grid-auto-flow`
45
+ - `justify-items`
46
+ - `justify-self`
47
+ - `align-items`
48
+ - `align-self`
49
+ - `gap`, `row-gap`, `column-gap`
50
+
51
+ ### Linear 相关(Lynx 特有)
52
+
53
+ - `linear-orientation`
54
+ - `linear-direction` - Lynx 2.2+
55
+ - `linear-gravity`
56
+ - `linear-layout-gravity`
57
+ - `linear-cross-gravity` - Lynx 1.6+
58
+ - `linear-weight`
59
+ - `linear-weight-sum`
60
+
61
+ ### Relative 相关(Lynx 特有)
62
+
63
+ - `relative-id`
64
+ - `relative-align-top`, `relative-align-bottom`
65
+ - `relative-align-left`, `relative-align-right`
66
+ - `relative-align-inline-start`, `relative-align-inline-end` - RTL 支持
67
+ - `relative-top-of`, `relative-bottom-of`
68
+ - `relative-left-of`, `relative-right-of`
69
+ - `relative-inline-start-of`, `relative-inline-end-of` - RTL 支持
70
+ - `relative-center`
71
+ - `relative-layout-once` - 内部优化属性
72
+
73
+ ### Position 相关
74
+
75
+ - `position: relative | absolute | fixed | sticky`
76
+ - `top`, `right`, `bottom`, `left`
77
+ - `z-index`
78
+ - `inset-inline-start`, `inset-inline-end` - RTL 支持
79
+
80
+ ## 盒模型属性
81
+
82
+ ### 尺寸
83
+
84
+ - `width`, `height`
85
+ - `min-width`, `min-height`
86
+ - `max-width`, `max-height`
87
+ - `aspect-ratio`
88
+
89
+ ### 外边距
90
+
91
+ - `margin`
92
+ - `margin-top`, `margin-right`, `margin-bottom`, `margin-left`
93
+ - `margin-inline-start`, `margin-inline-end`(LTR/RTL 自适应)
94
+
95
+ ### 内边距
96
+
97
+ - `padding`
98
+ - `padding-top`, `padding-right`, `padding-bottom`, `padding-left`
99
+ - `padding-inline-start`, `padding-inline-end`(LTR/RTL 自适应)
100
+
101
+ ### 边框
102
+
103
+ - `border`
104
+ - `border-top`, `border-right`, `border-bottom`, `border-left`
105
+ - `border-width`, `border-style`, `border-color`
106
+ - `border-radius`
107
+ - `border-top-left-radius`, `border-top-right-radius`
108
+ - `border-bottom-left-radius`, `border-bottom-right-radius`
109
+ - `border-start-start-radius`, `border-start-end-radius` - RTL 支持
110
+ - `border-end-start-radius`, `border-end-end-radius` - RTL 支持
111
+ - `box-shadow`
112
+
113
+ ### 盒模型
114
+
115
+ - `box-sizing: border-box | content-box | auto`(默认 `border-box`)
116
+ - 显式 `border-box` 和 `content-box` 可用;迁移 Web 布局时不要只看 `box-sizing` 本身。若原页面同时依赖 `float`、浏览器默认 body margin/line-height、绝对定位包含块或 min/max 尺寸夹取,Lynx 与 Web 可能仍出现像素级差异。
117
+ - `overflow: visible | hidden | scroll`(部分支持)
118
+ - `clip-path`
119
+
120
+ ## 视觉属性
121
+
122
+ ### 背景
123
+
124
+ - `background`
125
+ - `background-color`
126
+ - `background-image`
127
+ - `background-size`
128
+ - `background-position`
129
+ - `background-repeat`
130
+ - `background-origin`
131
+ - `background-clip`
132
+
133
+ **兼容性注意**:
134
+
135
+ - `background-color` 适合直接用于普通 `view` / `page` 背景;常见命名色、透明色以及 `inherit` 继承值均受支持。
136
+ - `background` 简写支持常见背景值。迁移包含多个槽位的 Web 简写时,可以拆成已支持的长属性,便于确认每个槽位是否有 Lynx 对应能力。
137
+ - `background-attachment` 不在当前支持列表中。Web 简写里如果带有 `fixed` / `scroll` 等 attachment 关键字,迁移时应先评估是否真的需要该滚动绑定语义;仅需要颜色、图片、repeat、position 时,建议显式写出对应长属性:
138
+
139
+ ```css
140
+ .box {
141
+ background-image: url('bg.png');
142
+ background-repeat: repeat;
143
+ background-position: 0 0;
144
+ background-color: transparent;
145
+ }
146
+ ```
147
+
148
+ - Web 对 `html` / `body` 背景有特殊的 canvas 绘制和传播规则;Lynx 的 `page` 是页面根节点和全页背景承载面。需要整页背景时,请优先在 `page` 上设置背景;只有需要内容容器背景时,才把 Web `body` 的背景迁移到根 `view`。
149
+ - `background-image: url(...)` 可配合 `background-size`、`background-position`、`background-repeat` 控制背景图尺寸、位置和重复方式。迁移逗号分隔的多图层背景时,不建议混用 `none` 作为透明占位层。Web 会让 `none` 继续参与其它 `background-*` 图层列表的索引对齐:
150
+
151
+ ```css
152
+ /* Web: 中间的 none 是一个透明占位层,第三个 position 仍对应 bottom.png */
153
+ .panel {
154
+ background-image: url(top.png), none, url(bottom.png);
155
+ background-position: left top, center, right bottom;
156
+ }
157
+ ```
158
+
159
+ 在 Lynx 中需要相同视觉效果时,删除空图层,并同步删除其它 `background-*` 列表中对应位置的值;如果确实需要保留独立图层索引,使用嵌套 `<view>` 拆分背景层:
160
+
161
+ ```css
162
+ /* Lynx: 删除空图层,并保持其它背景列表的顺序一致 */
163
+ .panel {
164
+ background-image: url(top.png), url(bottom.png);
165
+ background-position: left top, right bottom;
166
+ }
167
+ ```
168
+
169
+ ### 颜色与透明度
170
+
171
+ - `color`
172
+ - `opacity`
173
+
174
+ ### 变换
175
+
176
+ - `transform: translate, translateX, translateY, translate3d`
177
+ - `transform: scale, scaleX, scaleY, scale3d`
178
+ - `transform: rotate, rotateX, rotateY, rotateZ, rotate3d`
179
+ - `transform-origin`
180
+
181
+ ### 过渡与动画
182
+
183
+ - `transition`
184
+ - `transition-property`
185
+ - `transition-duration`
186
+ - `transition-timing-function`
187
+ - `transition-delay`
188
+ - `animation`
189
+ - `animation-name`
190
+ - `animation-duration`
191
+ - `animation-timing-function`
192
+ - `animation-delay`
193
+ - `animation-iteration-count`
194
+ - `animation-direction`
195
+ - `animation-fill-mode`
196
+
197
+ **动画时间函数支持详情**:关键字 `ease`、`linear`、`ease-in`、`ease-out`、`ease-in-out`、`ease-in-ease-out` 均受支持;此外支持 `cubic-bezier(...)`、`steps(...)` 以及 Lynx 特有的 `square-bezier(...)`。详见 [CSS 值和单位](./values-and-units.md#动画时间函数)。
198
+
199
+ ## 文本属性
200
+
201
+ ### 字体
202
+
203
+ - `font-size`
204
+ - `font-weight`
205
+ - `font-family`
206
+ - `font-style`
207
+ - `line-height`
208
+
209
+ ### 文本样式
210
+
211
+ - `color`
212
+ - `text-align`
213
+ - `text-decoration`
214
+ - `text-overflow: clip | ellipsis`
215
+ - `white-space: normal | nowrap`
216
+
217
+ ### Lynx 文本特有
218
+
219
+ - `-x-auto-font-size`
220
+ - `-x-auto-font-size-preset-sizes`
221
+
222
+ ## 其他属性
223
+
224
+ ### 可见性
225
+
226
+ - `visibility: visible | hidden`
227
+ - `display: none`(完全移除)
228
+
229
+ ### 内容裁剪
230
+
231
+ - `clip-path`
232
+ - `mask-image`(部分支持)
233
+
234
+ ### Lynx 特有属性
235
+
236
+ - `-x-handle-color`
237
+ - `-x-handle-size`
238
+ - `-x-app-region`
239
+ - `-x-overlay`(iOS 特有)
240
+
241
+ ## 不支持的属性
242
+
243
+ 以下 Web CSS 属性在 Lynx 中**不支持**:
244
+
245
+ - ❌ `display: inline`(使用 `<text>` 组件)
246
+ - ❌ `display: inline-block`
247
+ - ❌ `float`
248
+ - ❌ `clear`
249
+ - ❌ `position: static`
250
+ - ❌ `table-*` 相关属性
251
+ - ❌ `list-style-*` 相关属性
252
+ - ❌ `writing-mode`
253
+ - ✅ `direction` — 支持 `ltr`, `rtl`, `normal`
254
+
255
+ ### Grid 不支持的属性
256
+
257
+ - ❌ `grid-column`(简写属性,请使用 `grid-column-start/end`)
258
+ - ❌ `grid-row`(简写属性,请使用 `grid-row-start/end`)
259
+ - ❌ `grid-area`
260
+ - ❌ 命名网格线: `[name] 1fr`
261
+ - ❌ `subgrid`
262
+
263
+ ## 版本说明
264
+
265
+ - **1.0**: 基础布局系统(Linear, Flex, Grid)
266
+ - **1.6**: 新增 `linear-cross-gravity`, `stretch` 值
267
+ - **2.0**: 新增 Relative 布局,`display: block/auto`
268
+ - **2.1**: 新增 `justify-content: stretch`, Grid 完善
269
+ - **2.2**: 新增 `linear-direction` 作为 `linear-orientation` 的替代