@microi.net/cli 5.8.5 → 5.8.6
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.
- package/.codebuddy-plugin/marketplace.json +2 -2
- package/.codebuddy-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/.mcp.json +1 -1
- package/.workbuddy-plugin/marketplace.json +2 -2
- package/.workbuddy-plugin/plugin.json +1 -1
- package/LICENSE +21 -21
- package/README.md +71 -71
- package/assets/build-meta.json +6 -6
- package/assets/feature-matrix.json +138 -138
- package/assets/logo.svg +4 -4
- package/cordis.patch.yml +1 -1
- package/package.json +1 -1
- package/scripts/codex-marketplace.json +20 -20
- package/scripts/mcp-codex-stdio-adapter.js +189 -189
- package/scripts/mcp-trae-windows-launcher.cmd +21 -21
- package/scripts/microi-cli-mcp.js +7 -7
- package/scripts/microi-cli.js +66 -65
- package/scripts/microi-codex-broker.js +450 -450
- package/scripts/microi-codex-router.js +618 -618
- package/scripts/microi-skills.meta.json +384 -384
- package/skills/.microi-skills-version.json +2 -2
- package/skills/.progressive-disclosure-manifest.json +3566 -3566
- package/skills/README.md +287 -287
- package/skills/ai-engine/SKILL.md +269 -265
- package/skills/ai-engine/agents/openai.yaml +4 -4
- package/skills/ai-engine/references/ai-employees.md +48 -48
- package/skills/ai-engine/references/self-hosted-digital-human.md +59 -59
- package/skills/ai-platform-governance/SKILL.md +177 -177
- package/skills/ai-platform-governance/references/progressive-01-/345/212/237/350/203/275/345/274/200/345/205/263.md +190 -190
- package/skills/app-store/SKILL.md +525 -525
- package/skills/app-store/agents/openai.yaml +4 -4
- package/skills/business-blueprint/SKILL.md +193 -193
- package/skills/datasource-engine/SKILL.md +93 -93
- package/skills/datasource-engine/agents/openai.yaml +4 -4
- package/skills/dos-orm/SKILL.md +97 -97
- package/skills/dos-orm/references/api-reference.md +229 -229
- package/skills/email-engine/SKILL.md +81 -81
- package/skills/email-engine/references/v8-email.md +34 -34
- package/skills/job-engine/SKILL.md +176 -176
- package/skills/job-engine/agents/openai.yaml +4 -4
- package/skills/message-notification/SKILL.md +156 -156
- package/skills/message-notification/agents/openai.yaml +5 -5
- package/skills/message-notification/references/contracts.md +102 -102
- package/skills/microi/SKILL.md +14 -14
- package/skills/microi-ai-app-auth.js +652 -652
- package/skills/microi-ai-application/SKILL.md +115 -115
- package/skills/microi-ai-application/agents/openai.yaml +4 -4
- package/skills/microi-ai-application/references/frontend-baseline.md +164 -164
- package/skills/microi-client-frontend/SKILL.md +244 -244
- package/skills/microi-client-frontend/references/progressive-01-3-/345/212/250/346/200/201/346/214/211/351/222/256/347/263/273/347/273/237.md +144 -144
- package/skills/microi-client-frontend/references/progressive-02-8-/350/277/220/350/241/214/346/227/266/351/253/230/351/242/221/345/235/221/345/244/215/347/233/230.md +196 -196
- package/skills/microi-client-frontend/references/progressive-03-vue3-/345/211/215/347/253/257/345/276/256/346/234/215/345/212/241/345/256/277/344/270/273/350/247/204/345/210/231.md +167 -167
- package/skills/microi-codex/SKILL.md +102 -102
- package/skills/microi-codex-installer/SKILL.md +231 -231
- package/skills/microi-codex-installer/agents/openai.yaml +7 -7
- package/skills/microi-datasource-mapping/SKILL.md +122 -122
- package/skills/microi-db-schema/SKILL.md +175 -175
- package/skills/microi-db-schema/agents/openai.yaml +4 -4
- package/skills/microi-db-schema/references/core-tables.md +695 -695
- package/skills/microi-db-schema/references/form-component-options.md +256 -256
- package/skills/microi-db-schema/references/schema-overview.md +202 -202
- package/skills/microi-db-schema/references/schema.md +646 -646
- package/skills/microi-db-schema/references/table-catalog.md +1599 -1599
- package/skills/microi-deployment/SKILL.md +221 -221
- package/skills/microi-deployment/references/deployment-matrix.md +109 -109
- package/skills/microi-docs-coverage/SKILL.md +133 -133
- package/skills/microi-docs-coverage/references/capability-map.md +91 -91
- package/skills/microi-docs-coverage/scripts/audit-doc-skill-coverage.mjs +894 -894
- package/skills/microi-form-engine/SKILL.md +333 -333
- package/skills/microi-form-engine/references/component-catalog.md +218 -218
- package/skills/microi-form-engine/references/data-source-events.md +124 -124
- package/skills/microi-form-layout/SKILL.md +205 -205
- package/skills/microi-form-layout/references/progressive-01-3-/344/270/211/347/247/215/345/210/206/347/273/204/347/232/204/345/255/230/345/202/250/344/270/216/351/205/215/347/275/256.md +235 -235
- package/skills/microi-frontend-sdk/SKILL.md +194 -194
- package/skills/microi-frontend-sdk/references/progressive-01-token-/345/275/223/345/211/215/347/231/273/345/275/225/347/224/250/346/210/267/344/270/216/345/275/223/345/211/215/347/273/210/347/253/257/347/231/273/345/275/225/345/215/217/350/256/256.md +176 -176
- package/skills/microi-left-right-layout/SKILL.md +141 -141
- package/skills/microi-microservice/SKILL.md +326 -324
- package/skills/microi-microservice/references/runtime-delivery.md +278 -278
- package/skills/microi-mobile-app-quality/SKILL.md +185 -185
- package/skills/microi-mobile-app-quality/references/progressive-01-4-/351/207/215/350/246/201/346/214/211/351/222/256/345/277/205/351/241/273/345/270/246/345/233/276/346/240/207.md +213 -213
- package/skills/microi-mobile-app-quality/references/progressive-02-9-/344/270/273/351/242/230/345/210/207/346/215/242/345/277/205/351/241/273/347/234/237/345/256/236/344/270/224/345/205/250/345/261/200/347/224/237/346/225/210.md +128 -128
- package/skills/microi-solution-quotation/SKILL.md +78 -78
- package/skills/microi-solution-quotation/agents/openai.yaml +4 -4
- package/skills/microi-solution-quotation/scripts/build_solution_quote.py +296 -296
- package/skills/microi-sso/SKILL.md +92 -92
- package/skills/microi-sso/references/acceptance.md +49 -49
- package/skills/microi-sso/references/configuration-and-security.md +53 -53
- package/skills/microi-sso/references/inbound.md +53 -53
- package/skills/microi-sso/references/outbound.md +39 -39
- package/skills/microi-system-delivery/SKILL.md +137 -137
- package/skills/microi-system-delivery/references/progressive-01-/346/240/207/345/207/206/345/267/245/344/275/234/346/265/201.md +193 -193
- package/skills/microi-system-delivery/references/progressive-02-/350/207/252/345/212/250/345/214/226/346/265/213/350/257/225/345/277/205/351/241/273/350/246/206/347/233/226/347/232/204/345/235/221.md +217 -217
- package/skills/microi-ui/SKILL.md +192 -192
- package/skills/microi-ui/references/progressive-01-/347/247/273/345/212/250/347/253/257/345/234/272/346/231/257/350/223/235/345/233/276.md +183 -183
- package/skills/microi-uniapp-frontend/SKILL.md +193 -193
- package/skills/microi-uniapp-frontend/references/progressive-01-/347/247/273/345/212/250/347/253/257/345/210/206/347/261/273-/345/217/214/346/240/217/345/210/227/350/241/250/347/213/254/347/253/213/346/273/232/345/212/250.md +225 -225
- package/skills/microi-uniapp-frontend/references/progressive-02-/345/205/263/351/224/256/344/270/232/345/212/241/350/265/204/344/272/247/344/270/215/345/276/227/351/273/230/350/256/244/351/200/211/344/270/255.md +154 -154
- package/skills/microi.v8.js +1921 -1921
- package/skills/module-engine/SKILL.md +255 -255
- package/skills/module-engine/references/module-config.md +204 -204
- package/skills/ocr-engine/SKILL.md +113 -113
- package/skills/ocr-engine/agents/openai.yaml +4 -4
- package/skills/page-engine/SKILL.md +206 -206
- package/skills/page-engine/examples/compact-dashboard.json +1444 -1444
- package/skills/page-engine/references/progressive-01-/346/211/200/346/234/211/347/273/204/344/273/266/347/261/273/345/236/213.md +234 -234
- package/skills/page-engine/references/progressive-02-/347/211/210/346/234/254/345/216/206/345/217/262-/345/271/266/345/217/221/344/277/235/345/255/230/344/270/216/345/233/236/346/273/232.md +60 -60
- package/skills/performance-testing/SKILL.md +221 -221
- package/skills/playwright-e2e/SKILL.md +196 -196
- package/skills/playwright-e2e/references/progressive-01-/345/205/250/350/207/252/345/212/250/347/231/273/345/275/225-/345/205/215/351/252/214/350/257/201/347/240/201-/344/275/206/344/270/215/345/205/215/345/257/206/347/240/201-/345/277/205/350/257/273.md +173 -173
- package/skills/playwright-e2e/references/progressive-02-/346/226/207/345/255/227/345/257/271/346/257/224/345/272/246/344/270/216/345/217/257/350/257/273/346/200/247/350/207/252/345/212/250/345/214/226/346/243/200/346/237/245-/345/277/205/345/201/232.md +183 -183
- package/skills/playwright-e2e/references/progressive-03-microi-helper-/346/250/241/346/235/277.md +221 -221
- package/skills/playwright-e2e/references/progressive-04-ci-/345/273/272/350/256/256.md +115 -115
- package/skills/print-engine/SKILL.md +259 -259
- package/skills/production-readonly-audit/SKILL.md +41 -41
- package/skills/report-engine/SKILL.md +71 -71
- package/skills/report-engine/agents/openai.yaml +4 -4
- package/skills/scripts/optimize-progressive-disclosure.mjs +204 -204
- package/skills/scripts/refresh-progressive-disclosure.mjs +64 -64
- package/skills/scripts/sync-embedded-skills.mjs +46 -46
- package/skills/scripts/validate-progressive-disclosure.mjs +57 -57
- package/skills/search-engine/SKILL.md +75 -75
- package/skills/search-engine/agents/openai.yaml +4 -4
- package/skills/spider-engine/SKILL.md +190 -190
- package/skills/system-observability/SKILL.md +248 -248
- package/skills/system-observability/references/memory-incident-triage.md +77 -77
- package/skills/translate-engine/SKILL.md +140 -140
- package/skills/translate-engine/agents/openai.yaml +4 -4
- package/skills/ui-design/SKILL.md +223 -223
- package/skills/ui-design/assets/pattern-showcase/app.js +54 -54
- package/skills/ui-design/assets/pattern-showcase/index.html +163 -163
- package/skills/ui-design/assets/pattern-showcase/styles.css +311 -311
- package/skills/ui-design/assets/templates/MCI-DESIGN.md +206 -206
- package/skills/ui-design/references/design-pattern-library.md +184 -184
- package/skills/ui-design/references/mci-design-contract.md +163 -163
- package/skills/ui-design/references/motion-and-media.md +78 -78
- package/skills/ui-design/references/product-flow-recipes.md +94 -94
- package/skills/ui-design/references/progressive-01-/351/242/234/350/211/262/344/275/223/347/263/273-css-variables-/346/224/257/346/214/201/344/270/273/351/242/230/345/210/207/346/215/242.md +218 -218
- package/skills/ui-design/references/progressive-02-/345/255/227/344/275/223.md +164 -164
- package/skills/ui-design/references/progressive-03-/345/212/250/346/225/210/350/247/204/350/214/203-/344/270/260/345/257/214/344/275/206/344/270/215/345/215/241.md +235 -235
- package/skills/ui-design/references/progressive-04-/347/273/204/344/273/266/351/243/216/346/240/274/351/200/237/346/237/245.md +152 -152
- package/skills/ui-design/references/progressive-05-/347/247/273/345/212/250/347/253/257/344/270/223/347/224/250/350/247/204/350/214/203.md +238 -238
- package/skills/ui-design/references/progressive-06-/344/270/273/351/242/230/345/210/207/346/215/242/345/256/236/347/216/260.md +194 -194
- package/skills/ui-design/references/progressive-07-/351/200/237/346/237/245-/344/273/216/345/244/264/346/220/255/345/273/272/344/270/200/344/270/252/347/247/273/345/212/250/347/253/257/351/241/265/351/235/242.md +207 -207
- package/skills/ui-design/references/progressive-08-/350/241/250/345/215/225/345/210/206/347/273/204/350/247/204/350/214/203-tabs-vs-collapsegroup-/345/274/272/345/210/266.md +142 -142
- package/skills/uniapp-mall-assets/SKILL.md +176 -176
- package/skills/unity-integration/SKILL.md +171 -171
- package/skills/unity-integration/agents/openai.yaml +4 -4
- package/skills/unity-integration/references/ai-app-delivery.md +119 -119
- package/skills/unity-integration/references/sdk-api.md +82 -82
- package/skills/unity-integration/references/toolbox-migration.md +66 -66
- package/skills/unity-integration/references/webgl-hosting.md +57 -57
- package/skills/v8-api-config/SKILL.md +388 -388
- package/skills/v8-cache-pattern/SKILL.md +312 -312
- package/skills/v8-crud-api/SKILL.md +178 -178
- package/skills/v8-crud-api/references/progressive-01-/346/237/245/350/257/242/345/210/227/350/241/250-/345/210/206/351/241/265.md +226 -226
- package/skills/v8-crud-api/references/progressive-02-where-/346/235/241/344/273/266/350/257/255/346/263/225/351/200/237/346/237/245.md +49 -49
- package/skills/v8-debugging/SKILL.md +284 -284
- package/skills/v8-explorer-tree/SKILL.md +228 -228
- package/skills/v8-export-import/SKILL.md +219 -219
- package/skills/v8-export-import/references/progressive-01-excellayout-/351/253/230/347/272/247/350/207/252/347/224/261/345/270/203/345/261/200.md +211 -211
- package/skills/v8-export-import/references/progressive-02-powerpoint-/345/257/274/345/207/272.md +202 -202
- package/skills/v8-export-import/references/progressive-03-/345/256/211/345/205/250-/346/200/247/350/203/275/346/263/250/346/204/217.md +42 -42
- package/skills/v8-file-upload/SKILL.md +284 -284
- package/skills/v8-file-upload/references/progressive-01-/345/205/254/346/234/211/346/241/266-vs-/347/247/201/346/234/211/346/241/266.md +263 -263
- package/skills/v8-file-upload/references/progressive-02-office-/346/226/207/344/273/266/345/234/250/347/272/277/347/274/226/350/276/221/347/211/210/346/234/254/345/217/267/350/247/204/345/210/231.md +161 -161
- package/skills/v8-formengine-http/SKILL.md +238 -238
- package/skills/v8-frontend-events/SKILL.md +180 -180
- package/skills/v8-frontend-events/references/bluetooth-print-api.md +135 -135
- package/skills/v8-frontend-events/references/bluetooth-print.md +258 -258
- package/skills/v8-frontend-events/references/progressive-01-/345/210/227/350/241/250/344/272/213/344/273/266.md +219 -219
- package/skills/v8-http-integration/SKILL.md +182 -182
- package/skills/v8-http-integration/references/progressive-01-get-/350/257/267/346/261/202.md +220 -220
- package/skills/v8-http-integration/references/progressive-02-/351/224/231/350/257/257/345/244/204/347/220/206/346/250/241/345/274/217.md +44 -44
- package/skills/v8-image-processing/SKILL.md +190 -190
- package/skills/v8-image-processing/agents/openai.yaml +4 -4
- package/skills/v8-image-processing/references/api-reference.md +623 -623
- package/skills/v8-menu-buttons/SKILL.md +186 -186
- package/skills/v8-menu-buttons/references/progressive-01-2-/346/214/211/351/222/256/345/257/271/350/261/241-schema.md +222 -222
- package/skills/v8-menu-buttons/references/progressive-02-8-/346/250/241/345/274/217-f-/345/220/216/345/217/260/344/273/273/345/212/241/346/214/211/351/222/256-/351/225/277/344/273/273/345/212/241.md +228 -228
- package/skills/v8-menu-buttons/references/progressive-03-10-/345/217/215/346/250/241/345/274/217-/351/201/277/345/205/215.md +104 -104
- package/skills/v8-mongodb/SKILL.md +200 -200
- package/skills/v8-mq-mqtt/SKILL.md +176 -176
- package/skills/v8-mq-mqtt/references/mqtt-production.md +342 -342
- package/skills/v8-mq-mqtt/references/progressive-01-v8-mqtt-iot-/347/211/251/350/201/224/347/275/221.md +181 -181
- package/skills/v8-mq-mqtt/scripts/check-mqtt-skill-coverage.mjs +203 -203
- package/skills/v8-saas-multi-tenant/SKILL.md +305 -305
- package/skills/v8-security/SKILL.md +210 -210
- package/skills/v8-security/references/progressive-01-2-/346/235/203/351/231/220/346/240/241/351/252/214.md +200 -200
- package/skills/v8-security/references/progressive-02-7-/346/227/245/345/277/227/350/256/260/345/275/225.md +160 -160
- package/skills/v8-sql-query/SKILL.md +302 -302
- package/skills/v8-table-event/SKILL.md +176 -176
- package/skills/v8-table-event/references/progressive-01-informv8-js-/350/241/250/345/215/225/346/211/223/345/274/200/344/272/213/344/273/266.md +216 -216
- package/skills/v8-table-event/references/progressive-02-/345/211/215/347/253/257/344/272/213/344/273/266/345/220/215-v8-eventname-/345/217/257/350/203/275/347/232/204/345/200/274.md +46 -46
- package/skills/v8-tcp-integration/SKILL.md +147 -147
- package/skills/v8-tcp-integration/agents/openai.yaml +4 -4
- package/skills/v8-template-engine/SKILL.md +167 -167
- package/skills/v8-utilities/SKILL.md +104 -104
- package/skills/v8-utilities/references/client-api-index.md +143 -143
- package/skills/v8-utilities/references/platform-http-routes.md +83 -83
- package/skills/v8-utilities/references/server-api-index.md +188 -188
- package/skills/v8-workflow/SKILL.md +252 -252
- package/skills/v8-workflow/references/progressive-01-/350/212/202/347/202/271/345/274/200/345/247/213-v8-/344/272/213/344/273/266.md +180 -180
- package/skills/v8-workflow/references/workflow-configuration.md +49 -49
- package/skills/vision-engine/SKILL.md +160 -160
- package/skills/vision-engine/agents/openai.yaml +4 -4
- package/skills/vision-engine/references/architecture-and-acceptance.md +194 -194
- package/skills/workspace-conventions/SKILL.md +273 -273
- package/skills/workspace-conventions/references/progressive-01-/347/211/210/346/234/254/346/233/264/346/226/260/346/227/245/345/277/227/344/277/235/346/212/244/350/247/204/345/210/231-/345/274/272/345/210/266.md +209 -209
- package/skills/workspace-conventions/references/progressive-02-microi-net-api-/346/234/254/345/234/260/345/220/257/345/212/250/347/272/246/345/256/232.md +217 -217
- package/skills/workspace-conventions/references/progressive-03-cli-/344/270/216-ide-/346/217/222/344/273/266/351/224/231/347/211/210/345/205/261/345/255/230/347/272/246/345/256/232.md +27 -27
|
@@ -1,163 +1,163 @@
|
|
|
1
|
-
# MCI-DESIGN 设计契约
|
|
2
|
-
|
|
3
|
-
大型项目在根目录维护 `MCI-DESIGN.md`,让界面意图、精确取值和组件状态可以版本管理、自动检查,并由人和 AI 共同延续。它是 `Microi.UI/src/theme/tokens.css` 的项目级语义说明,不替代真实源码 token,也不替代线框、原型和视觉验收。
|
|
4
|
-
|
|
5
|
-
## 双层单源模型
|
|
6
|
-
|
|
7
|
-
设计契约必须同时包含两层,缺少任一层都不完整:
|
|
8
|
-
|
|
9
|
-
1. **机器可读层**:颜色、字体、间距、圆角、阴影、组件状态和引用关系。它回答“准确使用什么值”,用于检查、差异比较和生成运行时变量。
|
|
10
|
-
2. **人类可读层**:产品对象、受众、情绪目标、视觉隐喻、信息层级、选择理由和明确禁区。它回答“为什么这样设计”,帮助接手者在契约没有覆盖的新场景中作出一致判断。
|
|
11
|
-
|
|
12
|
-
精确值会随项目变化,设计理由决定取舍方向。若两层暂时冲突,先核对用户最新要求和合法源码,再同时修订契约与实现,禁止只改其中一边。
|
|
13
|
-
|
|
14
|
-
## 意图优先级
|
|
15
|
-
|
|
16
|
-
设计前按以下顺序收敛,不从颜色选择器开始:
|
|
17
|
-
|
|
18
|
-
1. 用户进入页面后的首要任务与成功结果。
|
|
19
|
-
2. 页面希望产生的一个主情绪,例如可信、安静、敏捷、温暖或专注。
|
|
20
|
-
3. 一个具体视觉隐喻,例如“安静的专业工作台”“柔和的手工纸张”“夜间发光仪表舱”。具体隐喻比堆叠“高级、现代、极简”等形容词更能约束色彩、材质、密度和动效。
|
|
21
|
-
4. 一组明确的“应当 / 禁止”,把隐含边界写出来。
|
|
22
|
-
5. 最后才是 token、组件和页面实现。
|
|
23
|
-
|
|
24
|
-
一个页面只保留一个主隐喻,辅助气质最多两项。不要把温暖圆润、深色霓虹、通透玻璃和高密度数据等多套语言同时堆在一个界面。
|
|
25
|
-
|
|
26
|
-
## 固定章节顺序
|
|
27
|
-
|
|
28
|
-
核心章节按以下顺序书写,便于稳定解析和审查:
|
|
29
|
-
|
|
30
|
-
1. 产品概览与目标用户
|
|
31
|
-
2. 视觉性格与情绪目标
|
|
32
|
-
3. 颜色
|
|
33
|
-
4. 字体
|
|
34
|
-
5. 布局与间距
|
|
35
|
-
6. 层级、材质与形状
|
|
36
|
-
7. 组件与状态
|
|
37
|
-
8. 页面模式与信息架构
|
|
38
|
-
9. 动效与媒体
|
|
39
|
-
10. 响应式与安全区
|
|
40
|
-
11. 可访问性、性能与降级
|
|
41
|
-
12. 应当与禁止
|
|
42
|
-
|
|
43
|
-
允许在末尾增加项目专属章节,但必须保留未知扩展内容,不能重复核心章节,也不能用近似拼写制造第二套同义章节。确实不适用的项目可以省略某一规则,但要在“有意省略”中说明理由。
|
|
44
|
-
|
|
45
|
-
## 机器可读层
|
|
46
|
-
|
|
47
|
-
机器块应使用语义命名,避免 `blue500`、`bigRadius`、`shadow2` 这类只描述外观、不说明用途的名字。组件可通过 `{路径}` 引用共享 token;引用必须存在,不能形成循环。
|
|
48
|
-
|
|
49
|
-
```yaml
|
|
50
|
-
contract:
|
|
51
|
-
version: 1
|
|
52
|
-
project: 示例项目
|
|
53
|
-
mode: data-workspace
|
|
54
|
-
intent: 安静、清晰、可快速扫描的专业工作台
|
|
55
|
-
|
|
56
|
-
tokens:
|
|
57
|
-
color:
|
|
58
|
-
canvas: var(--mci-bg-base)
|
|
59
|
-
surface: var(--mci-bg-card)
|
|
60
|
-
surfaceElevated: var(--mci-bg-elevated)
|
|
61
|
-
textPrimary: var(--mci-text-primary)
|
|
62
|
-
textSecondary: var(--mci-text-secondary)
|
|
63
|
-
primary: var(--mci-color-primary)
|
|
64
|
-
danger: var(--mci-color-danger)
|
|
65
|
-
typography:
|
|
66
|
-
title: { size: 16px, lineHeight: 1.45, weight: 700 }
|
|
67
|
-
body: { size: 14px, lineHeight: 1.65, weight: 400 }
|
|
68
|
-
meta: { size: 12px, lineHeight: 1.5, weight: 500 }
|
|
69
|
-
spacing:
|
|
70
|
-
compact: 8px
|
|
71
|
-
control: 12px
|
|
72
|
-
card: 16px
|
|
73
|
-
section: 24px
|
|
74
|
-
shape:
|
|
75
|
-
control: var(--mci-shape-input)
|
|
76
|
-
card: var(--mci-shape-card)
|
|
77
|
-
pill: var(--mci-radius-full)
|
|
78
|
-
elevation:
|
|
79
|
-
card: var(--mci-shadow-card)
|
|
80
|
-
cardHover: var(--mci-shadow-card-hover)
|
|
81
|
-
|
|
82
|
-
components:
|
|
83
|
-
dataCard:
|
|
84
|
-
background: "{tokens.color.surface}"
|
|
85
|
-
radius: "{tokens.shape.card}"
|
|
86
|
-
padding: "{tokens.spacing.card}"
|
|
87
|
-
states:
|
|
88
|
-
default: { elevation: "{tokens.elevation.card}" }
|
|
89
|
-
hover: { elevation: "{tokens.elevation.cardHover}", lift: -2px }
|
|
90
|
-
focus: { outline: "{tokens.color.primary}" }
|
|
91
|
-
selected: { border: "{tokens.color.primary}" }
|
|
92
|
-
disabled: { opacity: 0.56 }
|
|
93
|
-
|
|
94
|
-
omissions:
|
|
95
|
-
- rule: backgroundVideo
|
|
96
|
-
reason: 高频数据页不需要持续媒体,减少干扰与资源开销
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
机器块至少满足:
|
|
100
|
-
|
|
101
|
-
- 有主色、页面底色、表面色、主/次文字色和危险色。
|
|
102
|
-
- 字体角色包含字号、行高、字重;间距、圆角和层级都有明确单位或 `--mci-*` 引用。
|
|
103
|
-
- 组件状态覆盖适用的 default、hover、focus、pressed、loading、empty、error、disabled、selected、success。
|
|
104
|
-
- 同一语义只定义一次;组件优先引用共享 token,而不是重新复制值。
|
|
105
|
-
- Alpha、混色和玻璃表面必须说明叠加在哪种底色上;只给透明度不算完整颜色定义。
|
|
106
|
-
|
|
107
|
-
## 人类可读层
|
|
108
|
-
|
|
109
|
-
每个核心选择都要写一行理由,尤其是:
|
|
110
|
-
|
|
111
|
-
- 为什么这种气质适合目标用户与任务。
|
|
112
|
-
- 颜色如何区分主动作、状态、表面和内容层级。
|
|
113
|
-
- 字体如何形成阅读节奏,中文和数字如何共存。
|
|
114
|
-
- 内部紧凑与外部宽松分别使用哪些间距。
|
|
115
|
-
- 深度来自色调层、细边框、环境阴影、透明材质还是实体投影。
|
|
116
|
-
- 圆角、切角、胶囊或有机形状表达什么性格。
|
|
117
|
-
- 卡片、按钮、输入、导航、弹层在所有状态下如何变化。
|
|
118
|
-
- 哪些装饰会破坏任务,应明确禁止。
|
|
119
|
-
|
|
120
|
-
## 可迁移的视觉气质
|
|
121
|
-
|
|
122
|
-
以下不是成品主题,而是把意图翻译为系统规则的示例:
|
|
123
|
-
|
|
124
|
-
| 气质 | 色彩与材质 | 形状与间距 | 动效 | 禁止 |
|
|
125
|
-
| --- | --- | --- | --- | --- |
|
|
126
|
-
| 温暖友好 | 暖白或浅沙底、自然低饱和强调色、轻触感层次 | 圆润或轻微有机形,外部留白宽松 | 柔和上浮与按压 | 冷硬高对比、密集霓虹、尖锐切角 |
|
|
127
|
-
| 深色发光 | 深色表面、少量青蓝紫发光语义、清晰高对比文字 | 边界精确、圆角克制、层级紧凑 | 短促聚焦与状态脉冲 | 大面积炫光、彩虹状态色、持续漂移 |
|
|
128
|
-
| 雾感通透 | 灰白低彩底、细线边框、轻透明表面 | 大留白、轻圆角、细腻分层 | 慢速淡入与透明度变化 | 厚重投影、不透明色块堆叠、过度模糊 |
|
|
129
|
-
|
|
130
|
-
## 后台数据卡片契约
|
|
131
|
-
|
|
132
|
-
后台数据卡片是高频操作容器,不是营销海报:
|
|
133
|
-
|
|
134
|
-
- 固定信息顺序:真实图片或紧凑身份标记 → 标题与状态 → 2—4 个关键字段 → 时间/辅助标签 → 操作区。
|
|
135
|
-
- 配置了图片但当前行无图时,使用 40—44px 的首字/图标标记;禁止生成占据卡片三分之一以上的装饰占位图。
|
|
136
|
-
- 默认桌面四列,显式列数配置优先;中等宽度自动降为三列或两列,移动端单列。卡片最小可读宽度优先于“同屏塞更多”。
|
|
137
|
-
- 标题最多两行,主次文字、金额、状态与时间有固定层级;标签只表达状态或分类,不把每个字段都做成胶囊。
|
|
138
|
-
- 操作区优先一个主动作、一至两个次动作,其余收进“更多”;危险动作不得与主动作同权。移动端触控目标不小于 44px。
|
|
139
|
-
- 骨架屏必须复刻最终标题、字段和操作区的几何结构;空态解释原因并提供下一步。
|
|
140
|
-
- 整卡可进入详情时必须提供键盘焦点、Enter/Space 触发和可见 focus;内部按钮阻止事件冒泡。
|
|
141
|
-
|
|
142
|
-
## 契约检查、差异与输出
|
|
143
|
-
|
|
144
|
-
每次修改契约或 UI 时,按顺序检查:
|
|
145
|
-
|
|
146
|
-
1. **结构**:核心章节存在且顺序正确,无重复章节、疑似拼写错误或无法识别的 token 组。
|
|
147
|
-
2. **类型**:颜色、长度、数字、布尔值和状态对象类型正确,token 式文本没有被误放在普通说明里而漏解析。
|
|
148
|
-
3. **引用**:所有 `{路径}` 可解析,无循环引用;未被组件、页面或输出消费的孤立 token 要删除或说明用途。
|
|
149
|
-
4. **语义**:主色、表面、文字层级、组件状态和有意省略完整;命名能解释用途。
|
|
150
|
-
5. **可访问性**:正文和交互态对比度满足项目标准,焦点可见,键盘路径连续,低动效降级完整。
|
|
151
|
-
6. **差异门禁**:评审设计契约的语义变更和实现变更是否同时出现;意外删除、重命名或大范围 token 漂移应阻止合入。
|
|
152
|
-
7. **输出**:需要生成运行时变量或其它主题格式时,只由已校验的机器块派生,禁止维护第二份手工 token。
|
|
153
|
-
|
|
154
|
-
契约格式若仍在演进,项目必须锁定 `contract.version`,升级时先查看差异并一次性迁移。跨平台脚本要提供不依赖文件扩展名的稳定入口,避免不同终端执行出不同结果。
|
|
155
|
-
|
|
156
|
-
## AI 使用规则
|
|
157
|
-
|
|
158
|
-
- 开始实现前完整读取契约和 `ui-design` skill;先复述页面任务、主气质和三条禁止事项,再写页面。
|
|
159
|
-
- 契约缺少的精确值优先继承 Microi.UI token;不能用“看起来差不多”的硬编码补洞。
|
|
160
|
-
- 先稳定颜色、字体、间距、层级和形状,再定义组件状态;不要在基础 token 尚未收敛时过早堆复杂组件结构。
|
|
161
|
-
- 新模式在两个以上页面重复时,先更新契约,再抽成 `Mci*` 或项目级 `mci-*` 组件。
|
|
162
|
-
- 修改契约后至少截图一张受影响页面的桌面和移动版本,并覆盖亮/暗主题及相关业务状态。
|
|
163
|
-
- 契约、源码、浏览器截图三者冲突时不得宣称完成;修复后重新执行结构检查、定向测试和视觉验收。
|
|
1
|
+
# MCI-DESIGN 设计契约
|
|
2
|
+
|
|
3
|
+
大型项目在根目录维护 `MCI-DESIGN.md`,让界面意图、精确取值和组件状态可以版本管理、自动检查,并由人和 AI 共同延续。它是 `Microi.UI/src/theme/tokens.css` 的项目级语义说明,不替代真实源码 token,也不替代线框、原型和视觉验收。
|
|
4
|
+
|
|
5
|
+
## 双层单源模型
|
|
6
|
+
|
|
7
|
+
设计契约必须同时包含两层,缺少任一层都不完整:
|
|
8
|
+
|
|
9
|
+
1. **机器可读层**:颜色、字体、间距、圆角、阴影、组件状态和引用关系。它回答“准确使用什么值”,用于检查、差异比较和生成运行时变量。
|
|
10
|
+
2. **人类可读层**:产品对象、受众、情绪目标、视觉隐喻、信息层级、选择理由和明确禁区。它回答“为什么这样设计”,帮助接手者在契约没有覆盖的新场景中作出一致判断。
|
|
11
|
+
|
|
12
|
+
精确值会随项目变化,设计理由决定取舍方向。若两层暂时冲突,先核对用户最新要求和合法源码,再同时修订契约与实现,禁止只改其中一边。
|
|
13
|
+
|
|
14
|
+
## 意图优先级
|
|
15
|
+
|
|
16
|
+
设计前按以下顺序收敛,不从颜色选择器开始:
|
|
17
|
+
|
|
18
|
+
1. 用户进入页面后的首要任务与成功结果。
|
|
19
|
+
2. 页面希望产生的一个主情绪,例如可信、安静、敏捷、温暖或专注。
|
|
20
|
+
3. 一个具体视觉隐喻,例如“安静的专业工作台”“柔和的手工纸张”“夜间发光仪表舱”。具体隐喻比堆叠“高级、现代、极简”等形容词更能约束色彩、材质、密度和动效。
|
|
21
|
+
4. 一组明确的“应当 / 禁止”,把隐含边界写出来。
|
|
22
|
+
5. 最后才是 token、组件和页面实现。
|
|
23
|
+
|
|
24
|
+
一个页面只保留一个主隐喻,辅助气质最多两项。不要把温暖圆润、深色霓虹、通透玻璃和高密度数据等多套语言同时堆在一个界面。
|
|
25
|
+
|
|
26
|
+
## 固定章节顺序
|
|
27
|
+
|
|
28
|
+
核心章节按以下顺序书写,便于稳定解析和审查:
|
|
29
|
+
|
|
30
|
+
1. 产品概览与目标用户
|
|
31
|
+
2. 视觉性格与情绪目标
|
|
32
|
+
3. 颜色
|
|
33
|
+
4. 字体
|
|
34
|
+
5. 布局与间距
|
|
35
|
+
6. 层级、材质与形状
|
|
36
|
+
7. 组件与状态
|
|
37
|
+
8. 页面模式与信息架构
|
|
38
|
+
9. 动效与媒体
|
|
39
|
+
10. 响应式与安全区
|
|
40
|
+
11. 可访问性、性能与降级
|
|
41
|
+
12. 应当与禁止
|
|
42
|
+
|
|
43
|
+
允许在末尾增加项目专属章节,但必须保留未知扩展内容,不能重复核心章节,也不能用近似拼写制造第二套同义章节。确实不适用的项目可以省略某一规则,但要在“有意省略”中说明理由。
|
|
44
|
+
|
|
45
|
+
## 机器可读层
|
|
46
|
+
|
|
47
|
+
机器块应使用语义命名,避免 `blue500`、`bigRadius`、`shadow2` 这类只描述外观、不说明用途的名字。组件可通过 `{路径}` 引用共享 token;引用必须存在,不能形成循环。
|
|
48
|
+
|
|
49
|
+
```yaml
|
|
50
|
+
contract:
|
|
51
|
+
version: 1
|
|
52
|
+
project: 示例项目
|
|
53
|
+
mode: data-workspace
|
|
54
|
+
intent: 安静、清晰、可快速扫描的专业工作台
|
|
55
|
+
|
|
56
|
+
tokens:
|
|
57
|
+
color:
|
|
58
|
+
canvas: var(--mci-bg-base)
|
|
59
|
+
surface: var(--mci-bg-card)
|
|
60
|
+
surfaceElevated: var(--mci-bg-elevated)
|
|
61
|
+
textPrimary: var(--mci-text-primary)
|
|
62
|
+
textSecondary: var(--mci-text-secondary)
|
|
63
|
+
primary: var(--mci-color-primary)
|
|
64
|
+
danger: var(--mci-color-danger)
|
|
65
|
+
typography:
|
|
66
|
+
title: { size: 16px, lineHeight: 1.45, weight: 700 }
|
|
67
|
+
body: { size: 14px, lineHeight: 1.65, weight: 400 }
|
|
68
|
+
meta: { size: 12px, lineHeight: 1.5, weight: 500 }
|
|
69
|
+
spacing:
|
|
70
|
+
compact: 8px
|
|
71
|
+
control: 12px
|
|
72
|
+
card: 16px
|
|
73
|
+
section: 24px
|
|
74
|
+
shape:
|
|
75
|
+
control: var(--mci-shape-input)
|
|
76
|
+
card: var(--mci-shape-card)
|
|
77
|
+
pill: var(--mci-radius-full)
|
|
78
|
+
elevation:
|
|
79
|
+
card: var(--mci-shadow-card)
|
|
80
|
+
cardHover: var(--mci-shadow-card-hover)
|
|
81
|
+
|
|
82
|
+
components:
|
|
83
|
+
dataCard:
|
|
84
|
+
background: "{tokens.color.surface}"
|
|
85
|
+
radius: "{tokens.shape.card}"
|
|
86
|
+
padding: "{tokens.spacing.card}"
|
|
87
|
+
states:
|
|
88
|
+
default: { elevation: "{tokens.elevation.card}" }
|
|
89
|
+
hover: { elevation: "{tokens.elevation.cardHover}", lift: -2px }
|
|
90
|
+
focus: { outline: "{tokens.color.primary}" }
|
|
91
|
+
selected: { border: "{tokens.color.primary}" }
|
|
92
|
+
disabled: { opacity: 0.56 }
|
|
93
|
+
|
|
94
|
+
omissions:
|
|
95
|
+
- rule: backgroundVideo
|
|
96
|
+
reason: 高频数据页不需要持续媒体,减少干扰与资源开销
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
机器块至少满足:
|
|
100
|
+
|
|
101
|
+
- 有主色、页面底色、表面色、主/次文字色和危险色。
|
|
102
|
+
- 字体角色包含字号、行高、字重;间距、圆角和层级都有明确单位或 `--mci-*` 引用。
|
|
103
|
+
- 组件状态覆盖适用的 default、hover、focus、pressed、loading、empty、error、disabled、selected、success。
|
|
104
|
+
- 同一语义只定义一次;组件优先引用共享 token,而不是重新复制值。
|
|
105
|
+
- Alpha、混色和玻璃表面必须说明叠加在哪种底色上;只给透明度不算完整颜色定义。
|
|
106
|
+
|
|
107
|
+
## 人类可读层
|
|
108
|
+
|
|
109
|
+
每个核心选择都要写一行理由,尤其是:
|
|
110
|
+
|
|
111
|
+
- 为什么这种气质适合目标用户与任务。
|
|
112
|
+
- 颜色如何区分主动作、状态、表面和内容层级。
|
|
113
|
+
- 字体如何形成阅读节奏,中文和数字如何共存。
|
|
114
|
+
- 内部紧凑与外部宽松分别使用哪些间距。
|
|
115
|
+
- 深度来自色调层、细边框、环境阴影、透明材质还是实体投影。
|
|
116
|
+
- 圆角、切角、胶囊或有机形状表达什么性格。
|
|
117
|
+
- 卡片、按钮、输入、导航、弹层在所有状态下如何变化。
|
|
118
|
+
- 哪些装饰会破坏任务,应明确禁止。
|
|
119
|
+
|
|
120
|
+
## 可迁移的视觉气质
|
|
121
|
+
|
|
122
|
+
以下不是成品主题,而是把意图翻译为系统规则的示例:
|
|
123
|
+
|
|
124
|
+
| 气质 | 色彩与材质 | 形状与间距 | 动效 | 禁止 |
|
|
125
|
+
| --- | --- | --- | --- | --- |
|
|
126
|
+
| 温暖友好 | 暖白或浅沙底、自然低饱和强调色、轻触感层次 | 圆润或轻微有机形,外部留白宽松 | 柔和上浮与按压 | 冷硬高对比、密集霓虹、尖锐切角 |
|
|
127
|
+
| 深色发光 | 深色表面、少量青蓝紫发光语义、清晰高对比文字 | 边界精确、圆角克制、层级紧凑 | 短促聚焦与状态脉冲 | 大面积炫光、彩虹状态色、持续漂移 |
|
|
128
|
+
| 雾感通透 | 灰白低彩底、细线边框、轻透明表面 | 大留白、轻圆角、细腻分层 | 慢速淡入与透明度变化 | 厚重投影、不透明色块堆叠、过度模糊 |
|
|
129
|
+
|
|
130
|
+
## 后台数据卡片契约
|
|
131
|
+
|
|
132
|
+
后台数据卡片是高频操作容器,不是营销海报:
|
|
133
|
+
|
|
134
|
+
- 固定信息顺序:真实图片或紧凑身份标记 → 标题与状态 → 2—4 个关键字段 → 时间/辅助标签 → 操作区。
|
|
135
|
+
- 配置了图片但当前行无图时,使用 40—44px 的首字/图标标记;禁止生成占据卡片三分之一以上的装饰占位图。
|
|
136
|
+
- 默认桌面四列,显式列数配置优先;中等宽度自动降为三列或两列,移动端单列。卡片最小可读宽度优先于“同屏塞更多”。
|
|
137
|
+
- 标题最多两行,主次文字、金额、状态与时间有固定层级;标签只表达状态或分类,不把每个字段都做成胶囊。
|
|
138
|
+
- 操作区优先一个主动作、一至两个次动作,其余收进“更多”;危险动作不得与主动作同权。移动端触控目标不小于 44px。
|
|
139
|
+
- 骨架屏必须复刻最终标题、字段和操作区的几何结构;空态解释原因并提供下一步。
|
|
140
|
+
- 整卡可进入详情时必须提供键盘焦点、Enter/Space 触发和可见 focus;内部按钮阻止事件冒泡。
|
|
141
|
+
|
|
142
|
+
## 契约检查、差异与输出
|
|
143
|
+
|
|
144
|
+
每次修改契约或 UI 时,按顺序检查:
|
|
145
|
+
|
|
146
|
+
1. **结构**:核心章节存在且顺序正确,无重复章节、疑似拼写错误或无法识别的 token 组。
|
|
147
|
+
2. **类型**:颜色、长度、数字、布尔值和状态对象类型正确,token 式文本没有被误放在普通说明里而漏解析。
|
|
148
|
+
3. **引用**:所有 `{路径}` 可解析,无循环引用;未被组件、页面或输出消费的孤立 token 要删除或说明用途。
|
|
149
|
+
4. **语义**:主色、表面、文字层级、组件状态和有意省略完整;命名能解释用途。
|
|
150
|
+
5. **可访问性**:正文和交互态对比度满足项目标准,焦点可见,键盘路径连续,低动效降级完整。
|
|
151
|
+
6. **差异门禁**:评审设计契约的语义变更和实现变更是否同时出现;意外删除、重命名或大范围 token 漂移应阻止合入。
|
|
152
|
+
7. **输出**:需要生成运行时变量或其它主题格式时,只由已校验的机器块派生,禁止维护第二份手工 token。
|
|
153
|
+
|
|
154
|
+
契约格式若仍在演进,项目必须锁定 `contract.version`,升级时先查看差异并一次性迁移。跨平台脚本要提供不依赖文件扩展名的稳定入口,避免不同终端执行出不同结果。
|
|
155
|
+
|
|
156
|
+
## AI 使用规则
|
|
157
|
+
|
|
158
|
+
- 开始实现前完整读取契约和 `ui-design` skill;先复述页面任务、主气质和三条禁止事项,再写页面。
|
|
159
|
+
- 契约缺少的精确值优先继承 Microi.UI token;不能用“看起来差不多”的硬编码补洞。
|
|
160
|
+
- 先稳定颜色、字体、间距、层级和形状,再定义组件状态;不要在基础 token 尚未收敛时过早堆复杂组件结构。
|
|
161
|
+
- 新模式在两个以上页面重复时,先更新契约,再抽成 `Mci*` 或项目级 `mci-*` 组件。
|
|
162
|
+
- 修改契约后至少截图一张受影响页面的桌面和移动版本,并覆盖亮/暗主题及相关业务状态。
|
|
163
|
+
- 契约、源码、浏览器截图三者冲突时不得宣称完成;修复后重新执行结构检查、定向测试和视觉验收。
|
|
@@ -1,78 +1,78 @@
|
|
|
1
|
-
# Microi 动效与媒体规范
|
|
2
|
-
|
|
3
|
-
## 预算先行
|
|
4
|
-
|
|
5
|
-
| 项目 | 桌面建议 | 移动端建议 |
|
|
6
|
-
| --- | --- | --- |
|
|
7
|
-
| 首屏可读内容 | 尽快出现,不等待装饰资源 | 同左 |
|
|
8
|
-
| 主转场 | 260-420ms | 220-340ms |
|
|
9
|
-
| 微交互 | 140-220ms | 120-180ms |
|
|
10
|
-
| 列表交错 | 30-60ms/项,最多前 8 项 | 20-40ms/项,最多前 6 项 |
|
|
11
|
-
| Canvas/WebGL 像素比 | 上限 1.5-2 | 上限 1-1.5 |
|
|
12
|
-
| 持续装饰动画 | 至少 4s/循环 | 默认减弱或关闭 |
|
|
13
|
-
|
|
14
|
-
动画只使用 `transform`、`opacity` 和必要的 `background-position`。禁止持续动画布局属性、滤镜和阴影。
|
|
15
|
-
|
|
16
|
-
## 首屏动效状态机
|
|
17
|
-
|
|
18
|
-
```text
|
|
19
|
-
idle -> entering -> settled -> interacting -> paused -> reduced
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
- `entering` 只运行一次,不能因局部数据更新整页重播。
|
|
23
|
-
- `settled` 保留低振幅状态,主 CTA 始终可点击。
|
|
24
|
-
- 页面隐藏、离开视口或系统省电时进入 `paused`。
|
|
25
|
-
- `prefers-reduced-motion` 或低性能策略进入 `reduced`,直接显示最终布局。
|
|
26
|
-
|
|
27
|
-
## 滚动叙事
|
|
28
|
-
|
|
29
|
-
- 先把内容按无 JS 的普通页面排好,再增强 sticky 和进度。
|
|
30
|
-
- 每个滚动段只映射一个明确状态;使用离散段落而非无限连续参数。
|
|
31
|
-
- 粘性舞台不能捕获滚轮或阻止浏览器返回。
|
|
32
|
-
- 移动端内容高度过长时取消 sticky,按图文段落顺序展示。
|
|
33
|
-
|
|
34
|
-
## Canvas / WebGL
|
|
35
|
-
|
|
36
|
-
- Canvas 仅负责展示;标题、按钮、表单和可访问文本保留在 DOM。
|
|
37
|
-
- 初始化前显示同尺寸静态海报或骨架,失败时继续保留海报。
|
|
38
|
-
- 使用 `IntersectionObserver` 控制启停,标签页隐藏时暂停 requestAnimationFrame。
|
|
39
|
-
- 组件卸载时释放纹理、几何体、材质、事件和动画帧。
|
|
40
|
-
- 纹理使用本地合法资源,压缩尺寸;禁止把远程大图直接作为不可控依赖。
|
|
41
|
-
- 指针交互必须限定在容器,手机端改为陀螺仪前必须获得权限,否则使用静态视差。
|
|
42
|
-
|
|
43
|
-
## 图片
|
|
44
|
-
|
|
45
|
-
- 预览卡片先确定固定比例和 `object-fit`:人物/环境/商品通常 `cover`,完整界面/海报/移动端截图通常 `contain`。
|
|
46
|
-
- 首屏关键图片提供 width/height 或 aspect-ratio,防止布局偏移。
|
|
47
|
-
- 非首屏图片 `loading="lazy"`;首屏主图按需 preload,但不能一次 preload 多张大图。
|
|
48
|
-
- 远程资源必须下载为本地合法资产或提供稳定降级;404 时显示有品牌感的空图,不显示破图图标。
|
|
49
|
-
|
|
50
|
-
## 视频
|
|
51
|
-
|
|
52
|
-
- 视频必须静音、可暂停、有海报;默认不在移动端自动播放背景视频。
|
|
53
|
-
- 有声内容必须由用户主动触发,提供字幕或文字摘要。
|
|
54
|
-
- 背景视频不承担唯一信息;失败后页面仍能理解和操作。
|
|
55
|
-
|
|
56
|
-
## 可访问与低性能降级
|
|
57
|
-
|
|
58
|
-
```css
|
|
59
|
-
@media (prefers-reduced-motion: reduce) {
|
|
60
|
-
[data-mci-ui-root] *,
|
|
61
|
-
[data-mci-ui-root] *::before,
|
|
62
|
-
[data-mci-ui-root] *::after {
|
|
63
|
-
scroll-behavior: auto !important;
|
|
64
|
-
animation-duration: .01ms !important;
|
|
65
|
-
animation-iteration-count: 1 !important;
|
|
66
|
-
transition-duration: .01ms !important;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
同时检查低端 Android、后台标签页、弱网、资源失败、浏览器缩放 200% 和高对比模式。视觉效果不能成为业务完成事实源。
|
|
72
|
-
|
|
73
|
-
## 复盘:烘焙棋格与可交互覆盖层错位
|
|
74
|
-
|
|
75
|
-
- 触发场景:非母版比例屏幕、DPR 改变、横竖屏切换或背景呼吸动画后,点击/棋子未落在实际棋格。
|
|
76
|
-
- 根因:图片 cover 尺寸、设计尺寸与 framebuffer 尺寸混用,或图片独立变换而交互层静止。
|
|
77
|
-
- 通用规则:从实际图片尺寸与同一个父级变换推导烘焙 UV 位置;拾取为渲染的精确逆变换,棋子、提示、点击和特效共用坐标事实源。换肤与 resize 后重算,不增加第二层运行网格掩盖错位。
|
|
78
|
-
- 自动化检查:逐格 round-trip;原生比例/16:9/超宽/竖屏与不同 DPR 的真实 pointer 点击;动画前后、resize 和换肤后核对索引与截图。
|
|
1
|
+
# Microi 动效与媒体规范
|
|
2
|
+
|
|
3
|
+
## 预算先行
|
|
4
|
+
|
|
5
|
+
| 项目 | 桌面建议 | 移动端建议 |
|
|
6
|
+
| --- | --- | --- |
|
|
7
|
+
| 首屏可读内容 | 尽快出现,不等待装饰资源 | 同左 |
|
|
8
|
+
| 主转场 | 260-420ms | 220-340ms |
|
|
9
|
+
| 微交互 | 140-220ms | 120-180ms |
|
|
10
|
+
| 列表交错 | 30-60ms/项,最多前 8 项 | 20-40ms/项,最多前 6 项 |
|
|
11
|
+
| Canvas/WebGL 像素比 | 上限 1.5-2 | 上限 1-1.5 |
|
|
12
|
+
| 持续装饰动画 | 至少 4s/循环 | 默认减弱或关闭 |
|
|
13
|
+
|
|
14
|
+
动画只使用 `transform`、`opacity` 和必要的 `background-position`。禁止持续动画布局属性、滤镜和阴影。
|
|
15
|
+
|
|
16
|
+
## 首屏动效状态机
|
|
17
|
+
|
|
18
|
+
```text
|
|
19
|
+
idle -> entering -> settled -> interacting -> paused -> reduced
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
- `entering` 只运行一次,不能因局部数据更新整页重播。
|
|
23
|
+
- `settled` 保留低振幅状态,主 CTA 始终可点击。
|
|
24
|
+
- 页面隐藏、离开视口或系统省电时进入 `paused`。
|
|
25
|
+
- `prefers-reduced-motion` 或低性能策略进入 `reduced`,直接显示最终布局。
|
|
26
|
+
|
|
27
|
+
## 滚动叙事
|
|
28
|
+
|
|
29
|
+
- 先把内容按无 JS 的普通页面排好,再增强 sticky 和进度。
|
|
30
|
+
- 每个滚动段只映射一个明确状态;使用离散段落而非无限连续参数。
|
|
31
|
+
- 粘性舞台不能捕获滚轮或阻止浏览器返回。
|
|
32
|
+
- 移动端内容高度过长时取消 sticky,按图文段落顺序展示。
|
|
33
|
+
|
|
34
|
+
## Canvas / WebGL
|
|
35
|
+
|
|
36
|
+
- Canvas 仅负责展示;标题、按钮、表单和可访问文本保留在 DOM。
|
|
37
|
+
- 初始化前显示同尺寸静态海报或骨架,失败时继续保留海报。
|
|
38
|
+
- 使用 `IntersectionObserver` 控制启停,标签页隐藏时暂停 requestAnimationFrame。
|
|
39
|
+
- 组件卸载时释放纹理、几何体、材质、事件和动画帧。
|
|
40
|
+
- 纹理使用本地合法资源,压缩尺寸;禁止把远程大图直接作为不可控依赖。
|
|
41
|
+
- 指针交互必须限定在容器,手机端改为陀螺仪前必须获得权限,否则使用静态视差。
|
|
42
|
+
|
|
43
|
+
## 图片
|
|
44
|
+
|
|
45
|
+
- 预览卡片先确定固定比例和 `object-fit`:人物/环境/商品通常 `cover`,完整界面/海报/移动端截图通常 `contain`。
|
|
46
|
+
- 首屏关键图片提供 width/height 或 aspect-ratio,防止布局偏移。
|
|
47
|
+
- 非首屏图片 `loading="lazy"`;首屏主图按需 preload,但不能一次 preload 多张大图。
|
|
48
|
+
- 远程资源必须下载为本地合法资产或提供稳定降级;404 时显示有品牌感的空图,不显示破图图标。
|
|
49
|
+
|
|
50
|
+
## 视频
|
|
51
|
+
|
|
52
|
+
- 视频必须静音、可暂停、有海报;默认不在移动端自动播放背景视频。
|
|
53
|
+
- 有声内容必须由用户主动触发,提供字幕或文字摘要。
|
|
54
|
+
- 背景视频不承担唯一信息;失败后页面仍能理解和操作。
|
|
55
|
+
|
|
56
|
+
## 可访问与低性能降级
|
|
57
|
+
|
|
58
|
+
```css
|
|
59
|
+
@media (prefers-reduced-motion: reduce) {
|
|
60
|
+
[data-mci-ui-root] *,
|
|
61
|
+
[data-mci-ui-root] *::before,
|
|
62
|
+
[data-mci-ui-root] *::after {
|
|
63
|
+
scroll-behavior: auto !important;
|
|
64
|
+
animation-duration: .01ms !important;
|
|
65
|
+
animation-iteration-count: 1 !important;
|
|
66
|
+
transition-duration: .01ms !important;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
同时检查低端 Android、后台标签页、弱网、资源失败、浏览器缩放 200% 和高对比模式。视觉效果不能成为业务完成事实源。
|
|
72
|
+
|
|
73
|
+
## 复盘:烘焙棋格与可交互覆盖层错位
|
|
74
|
+
|
|
75
|
+
- 触发场景:非母版比例屏幕、DPR 改变、横竖屏切换或背景呼吸动画后,点击/棋子未落在实际棋格。
|
|
76
|
+
- 根因:图片 cover 尺寸、设计尺寸与 framebuffer 尺寸混用,或图片独立变换而交互层静止。
|
|
77
|
+
- 通用规则:从实际图片尺寸与同一个父级变换推导烘焙 UV 位置;拾取为渲染的精确逆变换,棋子、提示、点击和特效共用坐标事实源。换肤与 resize 后重算,不增加第二层运行网格掩盖错位。
|
|
78
|
+
- 自动化检查:逐格 round-trip;原生比例/16:9/超宽/竖屏与不同 DPR 的真实 pointer 点击;动画前后、resize 和换肤后核对索引与截图。
|