Figma 自动布局进阶:6 个约束做出可复用组件

你将完成什么

用一个「按钮(Button)」组件从 0 到 1 搭出可复用结构,并让它在不同文字长度、不同尺寸、不同容器宽度下都能稳定响应。

目标:同一个组件既能做主按钮/次按钮,也能做带图标按钮,并且在换文案时不炸版。

准备:建立基础按钮框架

1)新建一个 Frame,命名为 Button

2)把文字放进 Frame 内(例如:立即购买)。

3)选中 Frame,开启 Auto layout(Shift + A)。

4)设置 Padding:左右 16,上下 10;设置 Corner radius:10;给一个明显的填充色。

约束 1:宽度用「Hug contents」还是「Fixed」

按钮最常见需求是「文字多了按钮自动变宽」。因此按钮 Frame 的宽度建议设为 Hug contents

什么时候用 Fixed?当你做的是「等宽按钮组」或「表格内按钮」,需要统一宽度,这时改成 Fixed 并配合对齐即可。

约束 2:文字层必须 Hug,避免撑坏布局

选中文字层:

- Auto layout 内的文本建议设为 Hug contents

- 如果你把文本设成 Fill container,按钮就会被迫跟着容器逻辑走,容易出现“按钮看起来变成一整条”的问题。

约束 3:间距(Spacing)用变量思维

把按钮内部的 Spacing(元素间距)当作一个“可调参数”。

例如图标 + 文字:Spacing 设为 8;纯文字:Spacing 可以为 0 或直接隐藏图标层。

建议做法:图标层保留,但在变体里用 Component properties 控制显示/隐藏。

约束 4:对齐与基线,解决图标+文字不齐

当按钮内包含图标时,常见问题是“看起来图标和文字不在一条线上”。

处理方式:

1)把 Auto layout 的对齐设为 Center

2)如果字体视觉中心偏上/偏下,优先微调图标的上下内边距,而不是改文字行高。

约束 5:最小高度/最小宽度,防止按钮被挤扁

把按钮放进更大的容器(例如卡片或顶部栏)后,可能会被压缩。

建议给 Button Frame 设置 Min height(比如 36)以及必要时的 Min width(比如 88),保证触控/点击面积与可读性。

约束 6:响应式按钮(Fill container)怎么做才不炸

当你需要按钮在父容器里“拉伸占满宽度”:

1)Button Frame 宽度设为 Fill container

2)文字层保持 Hug(不要 Fill)。

3)在 Auto layout 里把对齐设为 Center(或按产品需要设为 Left)。

这样按钮能拉伸,但文案不会被拉扯成奇怪的对齐。

把它做成可复用组件(推荐做法)

1)选中 Button Frame,创建组件(Ctrl + Alt + K)。

2)做 3 个变体:Primary / Secondary / Ghost(只改颜色、描边、阴影)。

3)增加一个 Icon 属性:左图标开/关。

4)在说明文档页写清楚:默认 Padding、默认字号、最小高度,以及什么时候用 Hug/Fill。

快速自检清单(照着检查)

- 文案从 2 个字换到 10 个字,按钮是否自然变宽?

- 放进窄容器,是否仍保持最小高度?

- Fill container 时,文案是否仍然居中/左对齐正确?

- 图标开关后,Spacing 是否合理?

用户评论 (0)

登录后参与讨论

立即登录 注册账号

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

操作成功