Figma 组件变体实战:用 Auto Layout 做一套可复用按钮库

做设计系统最先踩的坑,往往不是“不会做组件”,而是按钮这种高频基础件没有从一开始就规范好:尺寸不统一、文案一变就爆版、不同页面出现 5 种圆角与阴影、交付时又很难讲清楚“哪个才是标准”。

这篇教程用一个可直接照做的“按钮组件库”作为例子,带你用 Component + Variants + Auto Layout 把按钮体系一次搭好:以后只需要替换文字/图标、切换状态,就能稳定产出一致的按钮。

一、准备:先定义你要覆盖的按钮场景

开始画之前,先把“按钮会出现的情况”列成清单(越具体越省返工):

1)尺寸:S / M / L(三档足够)

2)层级:Primary / Secondary / Tertiary(或实心/描边/文字)

3)状态:Default / Hover / Pressed / Disabled(可选:Loading)

4)可选结构:左图标 / 右图标 / 仅图标

5)文案长度:1-8 个字的中文、以及更长的英文(必须测试)

这份清单将直接变成你的 Variants 维度(Properties)。

二、搭一个“基础按钮”框架(Auto Layout)

新建一个 Frame 作为按钮容器,设置 Auto Layout:

1)方向:Horizontal

2)Padding:左右 16,上下 10(先以 M 尺寸为例)

3)Item spacing:8(文字与图标间距)

4)对齐:垂直居中

5)高度策略:固定高度(例如 40),宽度 Hug contents(让文字驱动宽度)

6)圆角:8(按你的品牌规范)

然后放入 2 个子层:Icon(可空)与 Label 文本。Label 建议用统一的文本样式(Text Style),例如:14/20、Semibold。

三、把“按钮”变成组件,并规划属性命名

选中基础按钮 Frame,创建组件(Create component)。接着开始做变体(Combine as variants)。建议属性命名用英文,后续更利于交付与检索:

1)Type:Primary / Secondary / Tertiary

2)Size:S / M / L

3)State:Default / Hover / Pressed / Disabled / Loading

4)Icon:None / Left / Right(如果你要支持)

提示:属性数量不要上来就爆炸。实操里最常见的错误是把“颜色、圆角、阴影”都做成属性,结果维护困难。优先覆盖真实业务的 Type/Size/State。

四、做 Size 维度:只改数值,不改结构

复制出 S/M/L 三个尺寸变体时,尽量遵循“结构不动,只调数值”的原则:

1)S:高度 32,padding 12/8,字体 12/16

2)M:高度 40,padding 16/10,字体 14/20

3)L:高度 48,padding 20/12,字体 16/24

如果你使用固定高度,记得让容器的 Vertical padding 合理,否则文字会不居中。最稳的方式是:高度固定 + 子项垂直居中。

五、做 Type 维度:用样式管理颜色与描边

不同 Type 主要差在:背景、文字颜色、描边、阴影。建议用 Color Styles 管理:

1)Primary:背景品牌主色,文字白色

2)Secondary:背景浅色或白色,描边 1px,文字主色

3)Tertiary:无背景无描边,文字主色(可加 hover 背景)

这样做的好处是:品牌色更新时,只改样式,不必逐个改变体。

六、做 State 维度:Hover/Pressed/Disabled 的推荐规则

状态设计的关键是“可感知但不过度”。一套通用规则如下:

1)Hover:背景亮度 +5% 或加轻微阴影;Secondary/Tertiary 可用浅底色提示悬停

2)Pressed:背景亮度 -5% 或阴影减弱;可加 1px 内阴影模拟按下

3)Disabled:整体不透明度 40%-60%,同时禁用光标与交互(文档说明即可)

4)Loading(可选):按钮宽度保持不变,Label 透明或替换为“加载中”,居中放置 Spinner

注意:Loading 状态如果让内容宽度变化,会导致布局抖动。做法是给 Label 预留宽度或使用固定最小宽度。

七、图标策略:用布尔/枚举属性控制显示

如果你要支持图标按钮,建议不要把“图标内容”做成变体的一部分,而是:

1)保留 Icon 图层(默认隐藏)

2)通过 Icon 属性(None/Left/Right)来控制图标是否显示、以及图标层的位置

3)图标尺寸随 Size 自动切换:S=16,M=18,L=20(根据你的规范)

在 Figma 里可以通过对不同变体里 Icon 的 visible 状态来实现“None/Left/Right”。

八、交付与使用建议:让别人“不会用错”

最后一步是把组件真正变成可用资产:

1)在组件描述(De ion)里写清:Type/Size/State 的含义与使用场景

2)为 Primary/Secondary 的使用边界给一句规则(例如:Primary 每屏最多一个)

3)把按钮组件放入清晰的库结构:Components / Button / Button

4)给常用按钮做几个示例(Examples),让新人一眼能抄

九、常见坑排雷(照这个检查一遍)

1)文字变长就爆版:确认容器是 Hug contents,Label 不是固定宽

2)按钮高度不一致:确认所有 Size 都使用同一套高度与 padding 逻辑

3)Disabled 看起来像“灰色但还能点”:在说明里写清交互禁用;视觉上降低对比与饱和

4)Loading 导致布局抖动:保证按钮最小宽度或为 Label 预留宽度

5)组件太难找:命名统一(Button / Button Icon / Icon Button),并放在同一个页面/分组下

按以上步骤做完,你会得到一套“结构稳定、状态齐全、可复用”的按钮组件库。后续再扩展(如 Danger、Success、Icon only)也会非常顺手。

用户评论 (0)

登录后参与讨论

立即登录 注册账号

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

操作成功