Figma 自动布局 + 组件变体:做一套可复用的按钮系统(含命名规范)

你将得到什么

这篇教程的目标,是在 30-60 分钟内用 Figma 搭出一套“可复制到任何项目”的按钮组件:支持尺寸、层级、状态、左/右图标、加载态,并且命名清晰、后期好维护。

准备:先定一套按钮规范(别跳过)

在开始画之前,先把按钮的可变维度写清楚。推荐最小可用集合:

1)尺寸 Size:S / M / L(比如高度 32 / 40 / 48)

2)层级 Hierarchy:Primary / Secondary / Tertiary

3)状态 State:Default / Hover / Pressed / Disabled

4)图标 Icon:None / Leading / Trailing

5)Loading:On / Off

有了这些维度,后面的“变体矩阵”才不会爆炸式增长。

Step 1:搭一个基础按钮(Auto Layout)

1)新建一个 Frame(快捷键 F),放入一段文字(T),内容写“按钮”。

2)选中文本,按 Shift + A 创建 Auto Layout。

3)在右侧 Auto Layout 设置:

- Padding:左右 16,上下 10(后续不同尺寸再做变体)

- Spacing:8(用于图标与文字间距)

- Alignment:居中

4)给容器加圆角(比如 8),并设置填充颜色(先做 Primary)。

Step 2:把“文字”做成可控属性

1)把按钮做成组件:Cmd/Ctrl + Alt + K。

2)在组件内部选中文本层,在右侧把文本内容暴露为 Text property(文本属性)。

这样之后使用者就能直接改按钮文案,不需要进组件内部。

Step 3:加入图标位(并用属性控制显示)

1)在 Auto Layout 内部,文本左侧插入一个 16x16 的图标占位(可以用简单的矢量或任意 Icon)。

2)把图标层命名为:Icon/Leading。

3)在右侧把这个图标层暴露为 Boolean property(开关属性),命名:Leading icon。

4)复制一份图标到文本右侧,命名:Icon/Trailing,同样暴露 Boolean property:Trailing icon。

提示:图标隐藏时,Auto Layout 会自动回收空间,按钮宽度不会乱。

Step 4:做变体(尺寸 / 层级 / 状态)

1)先做“尺寸”:复制组件,调整 Padding/字体大小/高度,分别得到 S/M/L 三个版本。

2)选中三份组件,右键 Combine as variants(合并为变体)。

3)在变体属性里创建并命名:

- Size = S | M | L

4)基于同一套尺寸,再做层级 Hierarchy:Primary / Secondary / Tertiary。

做法:复制变体并修改样式(例如 Secondary 用描边、Tertiary 用文字按钮)。

5)最后做状态 State:Default / Hover / Pressed / Disabled。

做法:每个层级下复制状态,按常见交互调整颜色/透明度/描边。

Step 5:加载态(Loading)怎么做才不麻烦

建议用一个布尔属性 Loading 来控制:

1)在按钮内放一个 16x16 的 loading 图标(可以是圆形描边)。

2)把文字层设置为在 Loading=On 时隐藏(Boolean property 控制 Visible)。

3)同时把 Loading 图标设置为 Loading=Off 时隐藏。

这样你不会因为“文案 + loading 同时出现”而反复调间距。

命名规范(直接套用)

组件名建议:

Button

变体属性建议固定顺序(方便团队沟通):

Hierarchy / Size / State / Leading icon / Trailing icon / Loading

例如一个实例:

Hierarchy=Primary, Size=M, State=Default, Leading icon=false, Trailing icon=true, Loading=false

常见坑与排查

1)按钮高度不统一:检查不同 Size 的 Padding 是否一致,以及字体行高是否被改动。

2)图标开关后间距怪:确保图标与文字都在同一个 Auto Layout 内,Spacing 统一设置为 8。

3)Disabled 看不出层级:Primary/Secondary/Tertiary 的 Disabled 建议使用不同的对比度策略(Primary 降低填充,Secondary 降低描边,Tertiary 降低文字)。

4)变体太多:把不必要的维度从变体里移出,用属性(Boolean/Text)替代,例如 Icon/Loading 用属性而不是单独变体。

收尾:把按钮放进组件库(可选但强烈推荐)

如果你有团队文件,建议把 Button 组件放到单独的 Library 页面,并在页面顶部写一段“使用说明”(什么时候用 Primary/Secondary/Tertiary,禁用态怎么用)。

到这里,一套可复用、可扩展的按钮系统就完成了。

用户评论 (0)

登录后参与讨论

立即登录 注册账号

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

操作成功