产品与设计 · 排版与视觉样式
设计令牌Design Token
把颜色、间距、圆角、字号等重复决策命名为令牌,组件只引用令牌名;改一处,引用处一起更新。
设计令牌实验台:改一处,引用处一起换
任务是为「项目申请卡」定 token。换品牌主色、调 --space-md 与 --radius-card,顶条、徽章、输入、按钮和留白同步响应;再点「打破徽章」,看偷写的死值如何脱钩。顶条色、徽章、留白和审计计数都长在卡片物件上。
任务:给这张「项目申请卡」定 token。换品牌主色、调 --space-md 和 --radius-card,看顶条、徽章、输入、按钮和留白如何引用同一组 token 一起变化;再点「打破徽章」,看徽章偷写死的 hex 与 px 后为什么不跟着换。结果长在卡片物件上——顶条色、徽章、留白和审计计数都会变。
通过。同一组 token(--brand #3f4456、--space-md 16px、--radius-card 8px)驱动顶条、徽章、输入、按钮与留白;改一处,引用处一起换。对照审计计数 0/3。下一步:点「打破徽章」,看偷写的死值为什么不跟 token 走。
面板里测到的结论
刚才顶条、徽章和留白随 token 整体联动、偷写值却原地不动,对应的就是命名、单一来源、改一处全局更新、脱钩与审计这几条主线。
- 命名即意图:
--brand/--space-md/--radius-card说用途,而不是 #3d4a7a / 16px / 8px。 - 单一来源:一个 token 被顶条、徽章、按钮、链接同时引用;token 是这些组件的共同上游。
- 改一处全局更新:调 --space-md 或换 --brand,所有引用处一起换,组件代码零改动。
- 偷写魔法数就脱钩:组件写死 hex/px 不再引用 token,换 token 时它不变,和引用处对不上。
- 审计可数:把每个组件的实际值对照 token,数出差值,得到「不一致 X/N」。
什么时候专门搭令牌
出现同一视觉决策反复出现、要做品牌换色或深色模式、多端或多组件库复用时搭;只一两处装饰色、一次性静态页不必上整套。
主色/间距/圆角/字号反复出现、品牌换色、深色模式、多端复用、组件库统一来源——把重复决策收成 token,改一处可验证全局。
令牌管的是「重复决策的单一来源」,不管构图与层级;层级还要靠字号、字重、间距和对比一起表达,不是加了 token 就自动整齐。
从重复决策到可审计的 token
不要从 hex 开始。先列重复决策,再分层命名,让组件只引用,最后用审计数出脱钩项。
- 列重复决策:扫一遍界面,把反复出现的颜色、间距、圆角、字号、阴影列出来,作为候选 token。
- 分层命名:基础值(scale.500)→ 语义 token(color.brand / space-md / radius-card)→ 组件级(button.bg),命名说用途和状态。
- 组件只引用:代码里写
var(--brand)/space-md,禁止裸 hex/px;新决策先加 token 再使用。 - 改 token 验证全局:换一个 token,检查所有引用处是否一起更新;没跟上的就是偷写值,记下来。
- 加审计:用 lint 或脚本数出裸 hex/px 和不一致项,把「不一致 X/N」纳入评审,防止魔法数回潮。
同一张申请卡:正例与反例
目标都是让徽章跟着品牌主色一起换。差异只在徽章是引用 token 还是写死 hex。
快速自测
设计师把主色从靛蓝换成石墨。徽章之前偷写过 #1f7a8c。换色后会发生什么?该怎么做?
继续查证
术语的技术定义和行为以这些一手或权威资料为准。
下一步学
和本知识点经常一起出现的概念。