形态适配
同一个灵魂在不同容器里的取值差异。 这不是九套设计,是一套设计的九次落地。
为什么需要这一层
网页可以有动效,印刷品不能;屏幕用 rem,印刷用 pt;文档站需要侧栏和搜索, 海报需要固定画布和安全区。这些差异是媒介强制的,不是风格选择。
把它们集中记录,好处是:当你在做一份报告时,不必重新推导"报告该用什么动效强度"—— 查表即可。
决策对照表
| 形态 | 轨道 | 动效 | 被强制的关键决定 |
|---|---|---|---|
| 网页文章 | 阅读轨 | E9-1 | 响应式画布,暗色模式必需 |
| 移动端 | 应用轨 | E9-1 | 触控 ≥44pt,安全区,分组列表合法 |
| 品牌 | 阅读轨 | E9-2 | 多尺寸标识,唯一允许品牌呼吸 |
| 印刷 | 阅读轨 | E8 | pt 字号,CMYK 映射,无暗色模式 |
| 幻灯 | 阅读轨 | E9-1 | 16:9 固定,≤80 字/页,键盘导航 |
| 文档站 | 阅读轨 | E9-0 | 侧栏 + 目录 + 搜索,可到三轨布局 |
| 海报 | 阅读轨 | E9-1 | 固定画布,accent 预算分配到标题与印 |
| 图表 | 阅读轨 | E9-0 | 节点与边分离,无自动布局 |
| 报告 | 阅读轨 | E9-0 | 图必须编号,摘要 / 发现 / 建议三段 |
跨形态不变的
无论哪个容器,这些都不变——它们就是不变之魂:
- 暖土色域与单一 accent(D9)
- 阅读轨内容页 ≤2 处 accent;应用轨按页面任务与合同分配强调
- 无卡片、无阴影、无渐变(A9)
- WCAG AA 底线
- token 词汇表
印刷是最有意思的约束
印刷形态强制 E8——结构上不可能有动效,
不是"建议不要用"。这在 CSS 里是一条硬规则而非约定,
也正好匹配审计器已有的断言。
印刷还强制一套独立的 pt 字号 token(--print-text-*),因为
1pt = 1/72 英寸是物理长度,与屏幕的 rem 没有换算关系。这是三层 token 架构里
形态级那一层存在的理由。
渲染合同
需要审计的产出页面携带一份机器可读的合同,声明形态、轨道、动效预算和结构要求。 渲染合同规范保留唯一的完整、可运行样例: 从那里复制整份 HTML,再替换项目名、slug 与形态;不要把几段 JSON 片段拼成一份“看起来像合同”的页面。
npm run audit -- dist/<slug>/index.html
它核验合同、HTML DOM、内联 <style> 与 style 属性中的可执行子集。
有外链样式表时会明确报告未检查范围;hardGates 为空不是浏览器视觉、辅助技术或人工仲裁都已通过。
审计器已自测,不等于审计了你的页面
npm run check:render-audit 运行一份合规夹具,以及缺少主地标、非法轨道和错误阅读轨 CTA 的故意缺陷。
这证明审计器会抓这些规则;消费者仍须在自己的输出目录运行它,并完成浏览器与人工检查。