Figma 按钮组件从 0 到 1:Auto Layout + 变量做一套可维护的状态系统

你将做出什么

目标:做一套可复用的按钮组件(Primary / Secondary / Ghost),包含 3 种尺寸(S/M/L)、4 种状态(Default/Hover/Pressed/Disabled),并且用 Variables 控制颜色与圆角,让后期换主题/改规范不需要逐个改图层。

准备:建立按钮的基础结构

  1. 新建一个 Frame,命名为 Button/
  2. 对 Frame 打开 Auto layout:方向 Horizontal;Padding 建议(M 尺寸)左右 16、上下 10;Item spacing 8;对齐 Center。
  3. 在内部放两个元素:可选图标(Icon)+ 文本(Label)。没有图标时也要保留占位逻辑:后面用组件属性控制显示/隐藏。
  4. 给 Label 设定文本样式(如 14/20,Medium)。建议把文本样式命名为 Text/Button/14,避免混用正文样式。

建立 Variables:颜色、圆角与透明度

在右侧面板打开 Variables(或通过 Assets → Local variables)。建议创建 3 组变量:Color、Radius、Opacity。

  1. Color:至少建立 btn/primary/bg、btn/primary/fg、btn/secondary/bg、btn/secondary/fg、btn/ghost/fg、btn/border。
  2. Radius:建立 btn/radius(如 10)。后续如果规范改为 12,只改变量即可。
  3. Opacity:建立 btn/disabled(如 40%)。禁用态不要手改每层透明度。

把 的填充、边框、文字颜色、圆角都绑定到对应 Variables(右侧属性旁的小方块 → 选择变量)。

做三种尺寸:S / M / L

建议把尺寸差异限定在 Padding、字体大小、图标尺寸三处,避免“看起来差不多但数值不同”的灾难。

  1. 复制 得到 Button/Size=SButton/Size=MButton/Size=L
  2. S:Padding 12x8,文字 12/16;M:16x10,文字 14/20;L:20x12,文字 16/24。
  3. 图标尺寸与文字联动:12/14/16 三档即可。

做三种层级:Primary / Secondary / Ghost

  1. Primary:有填充;文字用浅色(fg)。
  2. Secondary:浅底 + 边框(1px);文字用深色。
  3. Ghost:无填充;保留文字/图标颜色;Hover 时可以加一层轻微背景(也用变量控制)。

关键点:不要把颜色写死在图层上,全部绑定变量;这样切换品牌色、暗色主题或节日皮肤时成本最低。

做四种状态:Default / Hover / Pressed / Disabled

推荐用 Component variants 来做状态。创建组件后,使用属性:Type(Primary/Secondary/Ghost)、Size(S/M/L)、State(Default/Hover/Pressed/Disabled)、Icon(On/Off)。

  1. Default:基础变量。
  2. Hover:背景变量轻微提亮/加深;边框/文字可微调。
  3. Pressed:背景再加深;可增加 1px 内阴影或下移 1px(谨慎,保持一致)。
  4. Disabled:把整体不透明度绑定到 btn/disabled;同时禁用交互提示(在原型里不触发)。

可直接照做的命名与约束规范

  1. 组件命名:Button;属性命名用英文且首字母大写:Type/Size/State/Icon。
  2. 文本层叫 Label,图标层叫 Icon;图标外再套一层 Frame 叫 IconWrap,便于对齐与隐藏。
  3. 按钮宽度建议默认 Hug contents;需要固定宽度时,用组件实例外层约束(不要在组件内部硬写固定宽)。

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

  1. 进入 Prototype:Default → On hover 切到 Hover;Hover → While hovering 保持;Hover → On mouse down 切到 Pressed;Pressed → On mouse up 切回 Hover;Hover → On mouse leave 回 Default。
  2. Disabled 不需要交互连接,避免误导。
  3. 动效建议用 Smart animate,时长 100–150ms,ease out。

常见坑与排查清单

  1. Hover 颜色“看起来不对”:优先检查是不是某一层没绑定变量,或有覆盖的局部样式。
  2. 图标不居中:检查 IconWrap 是否是固定尺寸并居中对齐;不要直接对 Icon 做约束。
  3. 同一套按钮在不同页面高度不一致:统一 Line-height(如 20/24),并确保 Auto layout 的 Vertical padding 数值固定。
  4. 禁用态太灰:不要同时改颜色+透明度;推荐只用透明度变量统一处理。

你可以怎么扩展

下一步建议:增加 Loading 状态(Spinner 组件)、Icon-only 按钮、分裂按钮(Split Button)。这些都可以沿用同一套变量与属性,不需要推翻重做。

用户评论 (0)

登录后参与讨论

立即登录 注册账号

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

操作成功