Figma 实战:用变量 + 组件一键切换浅色/深色主题(可复用模板)

你将得到什么

完成后你会拥有一套“主题变量 + 组件库”的最小可用模板:同一个按钮/卡片组件,不用复制两份,就能在浅色与深色之间一键切换;并且颜色、文字、描边、阴影都能统一管理。

准备工作(5分钟)

1)新建一个 Figma 文件,创建两个页面:01-Foundations(基础)与 02-Components(组件)。

2)在 01-Foundations 里先列出你常用的基础色:Background / Surface / Text / Border / Primary / Danger 等(不用太多,先 12-20 个变量就够)。

步骤一:创建主题变量(Variables)

1)打开 Assets → Local variables(本地变量),新建一个 Collection,例如命名为 Theme

2)在这个 Collection 里新增两种模式(Modes):LightDark

3)按语义建变量(推荐语义命名,而不是 #fff 这种值命名):

• color/bg、color/surface、color/text、color/textSecondary、color/border、color/primary、color/primaryText…

4)给每个变量分别填 Light 与 Dark 的值。例如:

• color/bg:Light=#FFFFFF;Dark=#0B0F14

• color/text:Light=#111827;Dark=#E5E7EB

小建议:深色模式不要纯黑,正文也不要纯白,阅读更舒服。

步骤二:把变量映射到样式(可选,但强烈推荐)

你可以继续直接用变量上色,也可以把变量绑定到 Color Styles 里,方便团队习惯“样式”工作流。

1)选中一个矩形,填充使用变量 color/surface。

2)在 Fill 右侧点样式按钮,创建样式命名如 Fill/Surface

3)用同样方式创建:Text/Primary、Text/Secondary、Stroke/Border、Fill/Primary 等。

步骤三:制作能自动换肤的组件

下面做一个最常见的按钮组件(Button)。

1)在 02-Components 新建一个 Frame,开启 Auto Layout(水平),Padding 设为 12/16,圆角 10。

2)背景填充绑定 color/primary(或 Fill/Primary 样式),文本颜色绑定 color/primaryText

3)把它做成组件(Create component),命名:Button

4)添加变体(Variants):size=sm/md/lg,state=default/hover/disabled。

重点:不要在变体里写死颜色值,所有颜色都来自变量/样式,这样主题切换才会全局生效。

步骤四:一键切换 Light / Dark(验证是否成功)

1)在一个新页面(例如 03-Playground)把 Button 拖几个实例出来,再加一个卡片、输入框等组件。

2)打开右侧面板的 Variables(变量)设置,找到 Collection=Theme,切换 Mode 到 Dark。

3)如果你所有组件都在用变量,那么整个画面会立即换肤;若有元素没变,说明那里仍在使用写死的颜色值。

常见坑与排查清单

• 只改了 Fill 没改 Text:文本颜色也要用语义变量(color/text、color/textSecondary)。

• 阴影/描边忘记绑定:Shadow、Stroke 都要使用变量(例如 color/border)。

• 深色模式对比度太低:用更亮的 text、降低 bg 的纯度,必要时给 Surface 加一点亮度差。

• 组件里用了硬编码:选中元素 → 在颜色面板里检查是否显示“变量/样式”图标。

扩展:把主题系统做成“可复用模板”的两种方式

方式 A:在同一文件内维护(适合个人/小团队)。把 01-Foundations 与 02-Components 作为母版区,Playground 用来验证。

方式 B:发布为团队 Library(适合多人协作)。把变量与组件发布到 Team Library,项目文件里只用实例与引用。

你可以直接照抄的最小变量清单

color/bg、color/surface、color/surface2、color/text、color/textSecondary、color/border、color/primary、color/primaryHover、color/primaryText、color/danger、color/dangerText、color/focus

先把这 12 个跑通,再慢慢加上 Success/Warning、Elevation、Chart 等会更稳。

用户评论 (0)

登录后参与讨论

立即登录 注册账号

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

操作成功