Figma 组件变体实战:做一个可复用的按钮系统(含命名与交互规则)

你将做出什么

目标是做一套可以直接放进项目复用的「按钮组件」:包含不同类型(主/次/文字)、不同尺寸(L/M/S)、不同状态(默认/悬停/按下/禁用/加载),并且命名清晰、可被团队一致使用。

准备:建立按钮的基础结构(Auto Layout)

1)新建一个 Frame 作为按钮容器,打开 Auto Layout(Shift + A)。

2)在容器里放入两层:左侧可选图标(Icon),右侧文字(Label)。建议结构为:Icon(可隐藏) + Label。

3)容器设置建议:

  • Padding:左右 16,上下 10(后面会做尺寸变体调整)
  • Item spacing:8
  • 对齐:垂直居中、水平居中(按你的风格也可左对齐)
  • 约束:Hug contents(宽度随内容),Fixed height(高度由尺寸变体控制)

做第一个组件:从「默认 Primary」开始

1)给容器加填充色(例如品牌主色),圆角(例如 10)。

2)文字样式建议先做成文本样式(Text style),例如:14/20 Medium。这样后续全局调整更稳。

3)选中整个按钮 → Create component(Ctrl + Alt + K)。命名建议:Button

建立变体:Type / Size / State 三个维度

在右侧面板点击 Add variant,为这个组件创建变体。建议用 3 个属性(Properties):

  • Type:Primary / Secondary / Text
  • Size:L / M / S
  • State:Default / Hover / Pressed / Disabled / Loading

命名规则关键点:属性名用英文、值用固定枚举;不要混用中文或不同大小写。这样团队搜索和替换更一致。

尺寸变体怎么做(L / M / S)

你只需要改 3 件事:高度、Padding、字体(可选)。推荐参考:

  • L:高度 44,左右 18,上下 12,字体 14/20
  • M:高度 40,左右 16,上下 10,字体 14/20
  • S:高度 32,左右 12,上下 8,字体 12/16(或仍用 14/20)

实现方法:在每个 Size 变体里把容器高度设为 Fixed,对应数值;Padding按上面调整。保持 Auto Layout 的 Hug 内容宽度,会更适配不同文案。

状态变体怎么做(Default / Hover / Pressed / Disabled / Loading)

建议在 Primary 上先跑通,再复制到 Secondary/Text。

  • Hover:背景色略微加深(或提高饱和度),保持可读性
  • Pressed:再加深一点,或加 1px 内阴影体现按压
  • Disabled:降低不透明度(例如 40%~60%),同时取消阴影/描边强调
  • Loading:用「文字替换为加载中」或在文字前显示 Spinner 图标(Icon 可见),并锁定交互

注意:不要只靠透明度解决所有状态,否则在不同背景上可能不可读。Secondary(描边按钮)尤其要检查边框对比度。

做 Secondary / Text 两种 Type

1)Secondary:通常是透明背景 + 边框 + 文字主色。保持与 Primary 的 padding/高度一致。

2)Text:无背景无描边,仅文字(可选加轻微 Hover 底色)。Text 按钮常用于工具栏或列表操作。

建议把颜色做成 Color styles(例如 Brand/Primary、Text/Primary、Border/Default),后续换主题更快。

交互原型:把 Hover / Pressed 连接起来

在 Prototype 面板中,为组件建立交互:

  • Default → Hover:While hovering,切换到 Hover 变体
  • Hover → Pressed:While pressing,切换到 Pressed 变体
  • Disabled:不添加交互(或在使用端逻辑上禁用)

如果你需要「按下后保持选中」的按钮,请另外增加 State=Selected,并用 On click 切换到 Selected。

团队交付检查清单(避免返工)

  • 组件属性齐全:Type/Size/State 命名统一,没有拼写差异
  • 所有变体都可读:在浅色/深色背景上检查对比度
  • Icon 可开关:图标层可隐藏且不会破坏布局(Auto Layout 正常)
  • 文字不会溢出:长文案时按钮仍能 Hug,并且最小宽度可控(必要时加 min-width)
  • 交互连线正确:Hover/Pressed 不会跳错变体

常见问题与修复

问题1:切换变体后尺寸乱跳。通常是某个变体容器没有固定高度或 padding 不一致。统一每个 Size 的高度与 padding。

问题2:Icon 打开后文字不居中。检查 Auto Layout 对齐是否为垂直居中,Item spacing 是否一致;Icon 建议使用固定尺寸(例如 16x16)。

问题3:复制到别的文件样式丢失。尽量用 Styles(Color/Text)而不是直接填色;并把 Styles 命名规范化。

下一步扩展(可选)

你可以在这套按钮系统基础上,继续扩展:带下拉箭头的 Split Button、带图标的 Icon Button、带计数 Badge 的按钮等。建议每扩展一个类型,就按同样的 Type/Size/State 规则做齐变体。

用户评论 (0)

登录后参与讨论

立即登录 注册账号

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

操作成功