Figma 自动布局+变量:做一个可复用按钮组件的完整流程

你将做出什么

用一套“按钮组件(Button)”把 Figma 的自动布局(Auto Layout)、组件变体(Variants)和变量(Variables)串起来:做出可复用、可换主题、可快速改尺寸的按钮,并在一个真实页面里验证它能不能用。

准备:建立基础按钮组件

  1. 新建一个 Frame,放入一段文字(例如“按钮”)。
  2. 选中文字 + 外层 Frame,按 Shift + A 开启自动布局。
  3. 设置 Padding(上下 10、左右 16 作为起点),设置 Gap=8(以后放图标会用到)。
  4. 设置圆角(例如 10),并给按钮一个填充色与描边(先随便)。
  5. 把这一坨做成组件:右键 → Create component(或 Ctrl/⌘ + Alt + K)。命名:Button

变体 1:做“尺寸”体系(S / M / L)

  1. 选中 Button 组件,点击右侧 + 添加变体,建立一个 Variant set。
  2. 建立属性:size,值先做 S/M/L 三个。
  3. 分别调整不同尺寸的 Padding 与字体大小:
    • S:上下 8 左右 12;字号 12
    • M:上下 10 左右 16;字号 14
    • L:上下 12 左右 20;字号 16
  4. 关键点:文字层建议设为 Hug contents;外层按钮在自动布局里保持 Hug,这样按钮会跟随文字长度自适应。

变体 2:做“类型”体系(Primary / Secondary / Ghost)

  1. 在同一个 Variant set 里新增属性:type,值为 Primary / Secondary / Ghost。
  2. 为不同 type 配置样式:
    • Primary:有填充色,文字白色(或深色对比)
    • Secondary:浅填充或仅描边,文字使用主色
    • Ghost:无填充,无描边(或 1px 透明),主要靠文字颜色
  3. 把描边、填充、文字颜色都做成“可被变量驱动”的结构(下一节会接上)。

变量:用一套 Token 解决主题与一致性

目标:以后换主题(浅色/深色)或改主色,你不想逐个按钮改。做法是建立一套颜色变量(Tokens),再把组件样式绑定到变量。

  1. 打开 Variables 面板,新建 Collection:Color
  2. 在 Color 里建这些变量(示例命名):
    • color.primary
    • color.onPrimary
    • color.surface
    • color.onSurface
    • color.border
  3. 给 Collection 加 Modes:Light / Dark,分别填入颜色值。
  4. 回到 Button 组件,把 Primary 的填充绑定到 color.primary,文字绑定到 color.onPrimary;Secondary/Ghost 用 color.surface、color.border、color.onSurface 等。

交互状态:Hover / Pressed / Disabled 的简单做法

你可以用两种方式做状态:一是加一个属性 state(default/hover/pressed/disabled);二是用 Prototype 交互在 Hover 时切换变体。新手更稳的是“state 属性法”。

  1. 新增属性:state,值 default / hover / pressed / disabled。
  2. 在 hover/pressed 变体里把填充做轻微加深(或透明度变化),并保持对比度。
  3. disabled:降低不透明度、禁用描边强调,文字变浅;同时把鼠标指针交互放在原型里(可选)。

落地验证:在真实界面里用一遍

  1. 做一个简单表单卡片:标题 + 两个输入框 + 底部按钮区。
  2. 底部按钮区放 2 个按钮:Primary(提交)+ Ghost(取消)。
  3. 把 size 切到 S/M/L 看整体密度是否合理;把 Mode 切到 Light/Dark 看对比是否可读。
  4. 如果发现按钮在长文案时变得太宽,给按钮外层设一个 Max width(或在使用处用 Auto Layout + Fill 控制)。

常见坑与修正

  • 按钮不随文字变宽:检查文字和按钮外层是否都是 Hug;以及 Auto Layout 的宽度设置。
  • 切换变体样式丢失:尽量让结构一致(同层级同命名),图标位留空也保持占位。
  • 主题色换了要改一堆:把颜色都变量化,别直接用 Hard-coded 色值。
  • 对比度不够:Primary 的文字色用 onPrimary,别用随手白色;Dark 模式尤其要检查。

你可以继续扩展

  • 增加 icon 属性:none/left/right;用 Auto Layout 的 Gap 控制间距。
  • 增加 width 属性:hug/fill;让按钮在表单里可一键铺满。
  • 增加圆角变量、间距变量,做成完整的 spacing/shape token 体系。

用户评论 (0)

登录后参与讨论

立即登录 注册账号

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

操作成功