Figma Variables 实战:做一套可切换的浅深色主题(含按钮/输入框组件)

你将做出什么

最终你会得到一套可复用的小型设计系统:颜色与字号来自 Variables;同一套组件(按钮/输入框)可在 Light 与 Dark 两种模式间一键切换;后续新增页面也能保持风格一致。

准备工作(5分钟)

  1. 新建一个 Figma 文件,创建两页:Foundation(基础变量)与 Components(组件)。
  2. 打开右侧面板的 Variables(如果你没看到,先确认 Figma 版本已支持 Variables)。
  3. 确定你要覆盖的最小主题色集合:背景、文字、主色、边框、输入框填充、危险色(可选)。

第 1 步:创建颜色变量(Color Variables)

  1. 在 Variables 新建一个 Collection,命名为 Color
  2. 先只建 8~12 个变量就够用,建议命名:
    • bg/defaultbg/elevated
    • text/primarytext/secondary
    • border/default
    • brand/primarybrand/primary-hover
    • field/fillfield/fill-hover
  3. 先给这些变量填一套 Light 的颜色(随便用你熟悉的配色即可)。

提示:变量命名尽量用“语义”而不是“具体色值”(不要叫 blue-500),否则后期换主题会变得很痛苦。

第 2 步:为同一套变量建立 Light/Dark 两个 Mode

  1. 在 Color Collection 里新增 Mode:LightDark
  2. 切换到 Dark Mode,为每个变量填对应的暗色值(重点是对比度:背景更暗、文字更亮、边框更柔和)。
  3. 保持变量数量不变:两套 Mode 共用同一组变量名,这样切换才是“整体替换”。

第 3 步:创建字号变量(Typography Variables)

  1. 新建一个 Collection,命名为 Type(或 Typography)。
  2. 创建 Number 变量:font/body=14、font/ =20、font/caption=12(示例即可)。
  3. 如果你会做得更细:再加 lineHeight/bodyradius/sspace/4 这类变量,但不要一上来铺太多。

第 4 步:做一个按钮组件,并把颜色/字号绑定到变量

  1. 在 Components 页,新建一个按钮:Auto Layout 水平,左右 padding 16,上下 padding 10,圆角 10。
  2. 按钮背景填充绑定到 brand/primary;文字颜色绑定到 text/on-brand(如果你没建这个变量,就先用 text/primary 的反色思路补一个)。
  3. 文字字号绑定到 font/body
  4. 把按钮做成 Component,并加一个 Variant:state=default/hover/disabled
    • hover:背景绑定 brand/primary-hover
    • disabled:背景与文字改为更低对比度(建议也用变量,例如 bg/disabledtext/disabled

第 5 步:做一个输入框组件(Input),同样绑定变量

  1. 容器:Auto Layout,padding 12,圆角 10,背景绑定 field/fill
  2. 边框:Stroke 绑定 border/default,1px。
  3. 占位文字:颜色绑定 text/secondary,字号绑定 font/body
  4. 做 Variant:state=default/focus/error
    • focus:边框绑定 brand/primary 或单独建 border/focus
    • error:边框绑定 danger/default(没有就补一个语义变量)

第 6 步:一键切换主题(验证是否成功)

  1. 在画板上放一套“登录页”:背景、标题、按钮、输入框都用上。
  2. 打开 Variables 的 Mode 切换:从 Light 切到 Dark。
  3. 如果一切绑定正确,整页会整体切换,而不是只变一两个图层。

常见坑与排错清单

  • 只改了颜色没生效:检查图层是不是还在用固定色值;重新绑定到变量。
  • Dark 模式文字发灰:不要盲目降低不透明度,优先给 text/primary 一个足够亮的值。
  • 变量命名失控:先稳定语义层(bg/text/border/brand/field),再扩展层级。
  • 组件难维护:Variant 不要做太多状态;把“可变的东西”尽量抽为变量,而不是复制组件。

下一步怎么扩展

你可以在同一套变量之上继续添加:阴影(Shadow styles)、栅格间距变量(space/*)、图标颜色变量(icon/*),以及更完整的组件(导航栏、卡片、弹窗)。只要遵守“语义变量 + 多 Mode”的结构,规模越大越省心。

用户评论 (0)

登录后参与讨论

立即登录 注册账号

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

操作成功