Figma Variables 怎么为组件切换主题模式
来源:17golang原创
时间:2026-09-27 19:15:18 300浏览 收藏
要让 Figma 组件在浅色和深色主题之间切换,关键不是再做一套组件,而是把颜色值放进同一个 Variables 集合的不同 Mode。组件属性绑定变量后,只需切换组件或父级 Frame 的变量模式,背景、文字和强调色就会一起更新。
官方说明:https://help.figma.com/hc/en-us/articles/15343816063383-Modes-for-variables
完整路径是:Variables 建立 Theme 集合与 Light、Dark 两列 → 在 Fill 等属性中绑定颜色变量 → 选中组件或父级 Frame,在 Appearance 的 Apply variable mode 中选择模式。
创建变量模式需要相应套餐支持,单个集合可创建的模式数量也会随套餐变化。开始前还要确认自己对文件有编辑权限。
步骤一:创建 Theme 集合和两种模式
从文件左侧导航栏点击 Variables,打开变量视图。新建集合并命名为 Theme,先创建三个 Color 变量:surface/bg、text/primary 和 accent/brand。
打开 Theme 集合,在列标题右侧点击 New variable mode。Figma 会把第一列的值复制到新列;把左列命名为 Light,右列命名为 Dark,再分别填写两套颜色。集合最左列是默认模式,因此通常把 Light 放在最左侧。

成功标志:变量表里能同时看到 Light、Dark 两列,三个变量在每列都有色块和值;切换列时不存在空白单元格。
步骤二:把变量绑定到组件属性
回到画布,选中组件的背景层。在右侧 Fill 区域点击 Apply styles and variables,从 Theme 集合选择 surface/bg。再选中文字层,用同样方法把 Fill 绑定到 text/primary;按钮或重点元素可以绑定 accent/brand。

成功标志:Fill 不再显示孤立的固定色值,而是显示所绑定的变量名称。若某一层在切换主题后颜色不变,优先检查这一层是否仍使用硬编码颜色。
步骤三:在 Appearance 中切换模式
选中组件实例、组件、组件集或包住组件的父级 Frame。在右侧 Appearance 区域点击 Apply variable mode,悬停 Theme 集合并选择 Dark。Figma 允许 Frame、组件、分组、Section 和页面使用模式,因此更推荐在承载一组界面的父级容器上切换。

成功标志:画布中的背景、文字和强调色同时更新,左侧 Layers 面板中所选对象旁出现模式图标和 Dark 标签。切回 Light 时同一组属性应恢复浅色值。
模式不生效时按这几个位置排查
| 现象 | 检查位置 | 处理方式 |
|---|---|---|
| 只有部分颜色变化 | 对应图层的 Fill / Stroke | 把固定色值改为 Theme 变量 |
| 子组件跟着父级变化 | 子对象模式是否为 Auto | 这是正常继承;需要例外时显式指定模式 |
| 选择器中没有 Dark | 变量是否有多个模式 | 回 Variables 视图确认 Dark 列已创建 |
| 模式旁出现信息图标 | 库变量版本 | 先在源文件发布更新,再在使用文件接受更新 |
对象的模式默认是 Auto,会沿父级层级向上寻找已经指定的模式;如果所有父级也都是 Auto,就回退到集合默认模式。主题看似“自己变回去了”时,通常不是变量失效,而是对象正在继承父级或默认列。
为什么切换模式后组件 Variant 没有变化?
颜色变量只会改变已经绑定的设计属性。如果想让组件 Variant 随模式切换,需要把 String、Number 或 Boolean 变量映射到实例的 Variant 属性,而且变量值必须与 Variant 属性值一致。
可以只切换某一个组件吗?
可以。选中该组件,在 Appearance 中为它显式指定 Light 或 Dark。它将不再跟随父级 Auto 模式,适合做主题对照或局部反色区域。
这套做法的核心是“值放进模式,组件只绑定变量”。以后新增高对比主题或品牌主题,只需在 Theme 集合增加模式并填写变量值,不必重新复制组件和逐层改色。
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
337 收藏
-
253 收藏
-
481 收藏
-
437 收藏
-
414 收藏
-
204 收藏
-
417 收藏
-
406 收藏
-
189 收藏
-
169 收藏
-
337 收藏
-
109 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 485次学习