什么是设计 Token?
设计 Token 是一个带名字的值,用来保存单个设计决定,例如一种颜色、一个间距档位或一个字号。给决定起了名字,就能在设计工具和代码里重复使用,而不必在每个地方手写一遍。
为什么要给一个值起名字
想想主按钮用的那个颜色。直接写死的话,它在样式表里是 #2563EB,在 Figma 的填充里是一个十六进制字段,在某位开发上周敲下的代码里是一个字符串。三份副本,彼此毫无关系。
做成 Token,它只出现一次,挂在一个名字下面:
--color-action-primary: #2563EB;
其余地方都引用这个名字。改一次值,所有用到的地方跟着变。这层间接引用就是全部的想法,关于 Token 的其他一切都由此而来。
Token 通常覆盖什么
- 颜色:调色板、色阶,以及背景、边框、文字、状态这类语义角色
- 字体:字族、字号、字重、行高、字距
- 间距:一套一致的刻度,通常以 4px 或 8px 为基准
- 圆角与边框粗细
- 阴影与层级
- 动效:时长与缓动曲线
- 断点与布局尺寸
Token 不是变量
这个区别很要紧。CSS 变量是一种机制。设计 Token 是一个决定,只是恰好通过这种机制表达出来。
实际差别在于可移植性。Token 独立于任何一种具体技术存在,所以同一套 Token 可以输出成 CSS 自定义属性、Tailwind 配置、Figma 变量、Swift 或 Kotlin。如果它只以一行 CSS 的形式存在,那就是一个变量。
格式
W3C 下的 Design Tokens Community Group 发布了一套 JSON 格式,意在作为工具之间的通用交换。它给每个 Token 一个 $value 和一个 $type:
{
"color": {
"action": {
"primary": { "$value": "#2563EB", "$type": "color" }
}
}
}
采用程度参差不齐但在扩大,它是目前最接近设计工具与构建流水线之间中立交换格式的东西。
这与 Flash DSM 的关系
Flash DSM 从一句提示词、一个网址、一个 Figma 文件或一张截图生成完整的 Token 集,再把它导出为 CSS 自定义属性、Tailwind 配置、Tokens Studio JSON 或 Figma 变量。