目标:用 Figma 的 Variables(变量)做一套设计 Token(颜色/间距),并通过 Mode 实现浅色/深色主题一键切换。做完后,你可以把这套 Token 直接复用到按钮、卡片、列表等组件里。
这不是概念介绍,而是一套可照做的操作流程;每一步都能在画布上看到结果变化。
新建一个 Frame(例如 390×844 或 1440×900)。在里面放 3 个对象:
1)一个标题文本
2)一张卡片(矩形或带内容的容器)
3)一个按钮(建议用 Auto Layout)
这样后面绑定变量、切换模式时,变化会非常直观。
打开 Variables 面板,创建 2 个集合(Collection):
Color:用于颜色 Token(背景/表面/文字/主色等)
Spacing:用于间距 Token(4/8/12/16/24 等阶梯)
在 Color 集合里创建变量,命名建议用语义而不是“红/蓝”。示例:
- color/bg
- color/surface
- color/text
- color/primary
- color/primary-contrast
在 Spacing 集合里创建:
- space/4
- space/8
- space/12
- space/16
- space/24
Spacing 用数字阶梯是最常见的做法,后期维护非常省心。
在 Color 集合里新增两个 Mode:Light、Dark。然后给每个颜色变量分别填两套值。
示例(可按品牌色调整):
- color/bg:Light=#FFFFFF,Dark=#0B0F14
- color/surface:Light=#F6F7F9,Dark=#121826
- color/text:Light=#111827,Dark=#E5E7EB
- color/primary:Light=#2563EB,Dark=#60A5FA
- color/primary-contrast:Light=#FFFFFF,Dark=#0B0F14
到这里,你已经拥有了一套“可切换”的颜色 Token。
现在开始把硬编码颜色替换成变量:
1)选中 Frame 背景填充 → 选择变量 → 绑定 color/bg
2)选中卡片填充 → 绑定 color/surface
3)选中文本颜色 → 绑定 color/text
4)选中按钮填充 → 绑定 color/primary;按钮文字 → 绑定 color/primary-contrast
小提示:如果你发现某个对象切换主题时不变,90% 原因是它还在用“普通色值”。把它也绑定到变量即可。
把卡片/按钮设置成 Auto Layout 后,把 Padding 与 Item spacing 绑定到 Spacing 变量:
- 卡片 Padding:space/16
- 卡片 Item spacing:space/8
- 按钮左右 Padding:space/16;上下 Padding:space/12
这样做的价值是:你未来想把整个系统改得更“紧凑”或更“宽松”,不需要逐个组件改数值。
选中顶层 Frame,在右侧面板里找到变量集合的 Mode 选择,把 Color 从 Light 切到 Dark。
正常情况下:背景、卡片、文字、按钮会同时变化。如果只有部分变化,就回到 Step 3 检查绑定。
1)找不到 Variables:确认 Figma 版本/权限;部分团队需要在设置里开启或升级方案。
2)切换 Mode 没反应:对象没绑定变量,或者绑定到了不带 Mode 的集合。
3)组件实例不跟着变:建议在组件主件里绑定变量;只在实例上绑会导致复用时漏掉。
4)Dark 模式不舒服:优先调整 color/text 与 color/surface 的对比度,再微调主色亮度。
5)命名越来越乱:坚持用语义命名(bg/surface/text/primary),长期收益非常大。
- 给 Spacing 也加一个 Mode:Cozy/Compact,用于不同密度布局。
- 新增字体大小 Token:type/body、type/ 等,让排版也能一键调整。
- 给按钮补齐状态:Default/Hover/Pressed/Disabled,并用变量控制不同状态色值。
做完这些,你就拥有一套可长期复用的“主题 + 间距 + 组件”工作流。