Figma 自动布局与组件变体实操:做一套可复用的按钮和卡片组件

你将得到什么

做完这套练习,你会得到 2 个可复用组件:按钮(Button)与卡片(Card)。它们都具备:自动布局(Auto Layout)、可配置属性(Variant/Component Properties)、可伸缩约束(Constraints/Resizing),并且命名与结构足够规范,后续扩展「禁用 / 加载 / 图标位置 / 不同密度」时不会推倒重来。

准备:建立组件页与基础样式

1)新建一个页面(Page)命名为 Components

2)准备基础文字样式(Text Styles):建议至少有 Body/14Body/16Caption/12

3)准备基础颜色样式(Color Styles):例如 Primary/500、Primary/600、Gray/50、Gray/200、Gray/600、White。没有设计规范也没关系,先用任意颜色完成结构,后续再统一替换。

第一步:做一个「最小可用」按钮(Auto Layout)

1)画一个 Text:内容写「按钮」,应用 Body/14 或 Body/16。

2)选中文字,按 Shift + A 添加 Auto Layout,得到一个 Frame(这就是按钮容器)。

3)在右侧 Auto Layout 设置:

  • Padding:左右 16、上下 10(先用这一组,后面会做 Size 变体)
  • Spacing between items:8(为后续图标预留)
  • Alignment:居中

4)给容器加样式:圆角 8;填充 Primary/500;文字颜色 White。

5)把容器命名为 Button/ ,把文本层命名为 Label(习惯性命名会让团队协作省很多时间)。

第二步:让按钮支持「宽度自适应」与「填满容器」两种模式

关键点是 Resizing(尺寸策略):

  • 按钮容器:默认可以设置为 Hug contents(根据内容自适应宽度)
  • 当你需要按钮占满父级宽度时:把按钮实例(Instance)的宽度拉满,并把 Auto Layout 的水平 Resizing 设为 Fill container

提示:如果 Fill container 不可选,通常是因为父级不是 Auto Layout,或者按钮本身没有放在支持填充的容器中。先给父级加 Auto Layout 再试。

第三步:把按钮做成组件,并建立变体(Variants)

1)选中 Button/ ,按 Ctrl/Cmd + Alt + K(Create component)。

2)在右侧点击「Add variant」生成组件集(Component set)。

3)先做 2 个维度的变体(足够覆盖大多数项目):

  • Type:Primary / Secondary / Tertiary
  • State:Default / Hover / Disabled

4)实现方式建议:

  • Primary:填充 Primary/500,文字 White
  • Secondary:填充 White,描边 Gray/200,文字 Gray/600
  • Tertiary:透明背景,文字 Primary/600(可无描边)
  • Disabled:降低整体不透明度(例如 40%~60%),并确保对比度仍可读

命名建议:组件集命名为 Button,变体属性名保持简短统一(Type/State),避免混用中文和英文。

第四步:增加尺寸(Size)与图标(Icon)能力

1)新增第三个属性 Size:S / M / L。

  • S:左右 12、上下 8;字号 12/14
  • M:左右 16、上下 10;字号 14/16
  • L:左右 20、上下 12;字号 16

2)图标:在 Label 左侧放一个 16x16 的占位图标(可用简单几何形状),并把图标层命名为 Icon

3)新增属性 Icon:None / Leading / Trailing。

  • None:隐藏图标层(Visibility 关)
  • Leading:图标在左,Spacing 8
  • Trailing:把图标移到右侧(同样保持 Spacing 8)

小技巧:不要用绝对定位硬摆图标,尽量依赖 Auto Layout 的顺序与间距,这样内容变化时结构更稳定。

第五步:做一张卡片组件(Card)并支持不同内容密度

1)新建一个 Frame,按 Shift + A 变成 Auto Layout。

2)卡片结构建议:

  • 外层容器:Card(Auto Layout 垂直)
  • 顶部:标题 (Text)
  • 中部:描述 Desc(Text,可多行)
  • 底部:操作区 Actions(水平 Auto Layout),放 1~2 个按钮实例

3)外层容器设置:

  • Padding:16
  • Item spacing:12
  • 圆角 12;描边 Gray/200;填充 White;阴影可选(轻一点)
  • 宽度:建议设置为 Fill container(让它在列表中自适应)

4)把 Card 做成组件,并做一个属性 Density:Comfortable / Compact。

  • Comfortable:Padding 16,Spacing 12
  • Compact:Padding 12,Spacing 8(适合信息密集列表)

第六步:把按钮和卡片组合成一个可复用的列表项

做一个简单的列表(List)容器(垂直 Auto Layout,Spacing 12),放入多张 Card 实例。你会立刻看到:当卡片宽度变化、描述变长、按钮切换不同状态时,结构是否仍然稳定。

自检清单(做完就对了)

  • 按钮文字变长时不会挤坏圆角或对齐(Hug contents 正常)
  • 按钮设置 Fill container 时能撑满父容器
  • Type/State/Size/Icon 四个属性切换时,样式变化符合预期
  • 卡片的 Density 切换能正确改变间距与内边距
  • 卡片里放按钮实例时,按钮属性仍可单独配置(实例覆盖正常)

常见问题

1)为什么我做的按钮一拉宽文字就跑偏? 检查按钮容器是否为 Auto Layout,且内部对齐设置为居中;同时确认文本层没有被设置成固定宽度导致换行。

2)为什么 Fill container 选不了? 通常是父级不是 Auto Layout。把父级也设置为 Auto Layout,再把子级改为 Fill。

3)要不要上来就做很多变体? 不建议。先保证结构正确,再逐步加 Type/State/Size/Icon。变体爆炸是组件系统最常见的维护成本。

用户评论 (0)

登录后参与讨论

立即登录 注册账号

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

操作成功