Figma 实战:用变量 + 组件做可切换浅深色按钮系统(从零到可复用)

你将做出什么

目标是做一套“拿来就能用”的按钮系统:同一个按钮组件(Primary / Secondary / Tertiary),支持 Size(S/M/L)、State(Default / Hover / Pressed / Disabled)与 Theme(Light / Dark)切换。整个项目只维护一份组件结构,换主题时不改组件、不换样式表,只切换变量模式即可。

准备:建立颜色与语义 Token(Variables)

1)在右侧面板打开 Variables,创建一个 Collection:Theme

2)在 Collection 里创建两个 Mode:LightDark

3)先不要急着做“按钮专用颜色”,先做语义 token(推荐命名):

color/bg/surfacecolor/bg/surface-2color/text/primarycolor/text/invertcolor/border/defaultcolor/brand/primarycolor/brand/primary-pressed

4)为 Light / Dark 分别赋值:Light 里 surface 更浅、text 更深;Dark 里 surface 更深、text 更浅。品牌色建议两套模式保持一致或仅微调明度,保证识别度。

5)再补齐状态相关 token(最少):

btn/primary/bgbtn/primary/bg-hoverbtn/primary/bg-pressedbtn/primary/textbtn/primary/text-disabledbtn/primary/bg-disabled

提示:如果你不想 token 太多,也可以用 alias(变量引用变量)实现:btn/primary/bg → color/brand/primary,hover/pressed 指向对应的 brand token。

组件结构:用 Auto Layout 把按钮做“抗改动”

1)新建一个 Frame 作为按钮容器,开启 Auto Layout(水平),Padding 建议:左右 16、上下 10,Gap 8。

2)按钮里放:可选 Leading Icon、文本 Text、可选 Trailing Icon。三者都用 Auto Layout 包起来。

3)把文本层设置为 Hug contents;按钮容器设置为 Hug contents(或 Fill container 视使用场景)。

4)按钮圆角建议也做成变量或样式(如 radius/8)。尺寸体系做成变量更方便统一。

做变体(Variants):Type + Size + State

1)把按钮组件创建为 Component,并添加 Variants。

2)属性建议这样拆(清晰且可扩展):

Type:Primary / Secondary / Tertiary

Size:S / M / L

State:Default / Hover / Pressed / Disabled

3)Size 的差异只改:Padding、字体大小、图标尺寸。不要改结构。

4)State 的差异只改:背景、边框、文字颜色(全部来自变量)。避免手填具体色值。

把样式全部绑定到变量(关键步骤)

1)选中按钮背景 Fill,点变量图标,将其绑定到:btn/primary/bg(不同 Type 用不同 token)。

2)边框 Stroke 也绑定变量(Secondary/Tertiary 常用)。

3)文字颜色绑定 btn/primary/text;Disabled 时改为 btn/primary/text-disabled。

4)Hover/Pressed 不需要做交互原型也能实现:直接用 State 变体表达即可。想要真实交互时,再在 Prototype 里用 While hovering / While pressing 切换到对应 State。

主题切换:只切 Mode,不改组件

1)打开 Variables 面板,切换 Collection 的 Mode:Light → Dark。

2)你应该看到同一套按钮组件整体颜色随之变化(背景、文字、边框一致切换)。

3)如果某个元素没跟着变,说明它仍在用“硬编码色值”,回到组件里把它绑定到变量。

快速验收清单(3 分钟自检)

1)随便复制 6 个按钮到画布:不同 Type/Size/State 混合。

2)切换 Light/Dark,确认所有按钮都正确变化,尤其是 Disabled 的对比度与可读性。

3)把按钮放到浅色/深色背景上各看一遍,检查边框是否足够清晰。

4)检查文字:不要出现“浅色模式 OK、深色模式发灰”的情况;必要时为 Dark 模式单独调整 text token。

发布与复用:让团队一键用上

1)给按钮组件加说明(De ion),写清楚属性含义与推荐场景。

2)在 Library 发布组件;团队成员启用库后,直接插入按钮即可。

3)后续要改品牌色或深色背景对比度,只需要改变量值(或 alias),无需改每个组件。

常见坑与解决

坑 1:变量命名混乱 → 先用语义 token(surface/text/border/brand),再让组件 token 引用语义 token。

坑 2:Hover/Pressed 颜色手填 → 全部做成变量,或至少用 alias 指向 brand token,便于全局调整。

坑 3:深色模式对比不足 → Dark 模式里提升文字亮度、降低背景明度差;必要时给 border token 单独一套值。

坑 4:组件越来越重 → 属性保持少而清晰;不要在按钮里塞过多可选元素,把图标作为开关即可。

用户评论 (0)

登录后参与讨论

立即登录 注册账号

暂无评论,快来抢沙发吧~

操作成功