Figma 实战:用 Auto Layout 做响应式卡片组件(从 0 到交付)

你将做出什么

目标是做一个“商品/文章卡片”组件:包含封面、标题、描述、标签、价格/按钮等常见结构。它需要满足三件事:可响应(宽度变化不会炸版)、可复用(换文案/换图片不用重排)、可批量喂数据(用组件属性或变体快速生成多张卡片)。

准备:画板与布局基线

1)新建 Frame(例如 1440×900),在右侧把 Layout grid 设成 12 栅格(可选)。

2)新建一个卡片容器 Frame,先给一个初始宽度(例如 320),并设置圆角(例如 12)与描边/投影(按你项目风格)。

3)关键:把卡片容器的 Auto Layout 打开(Shift + A)。方向选择 Vertical,Padding 设 16/16/16/16,Item spacing 设 12。

第一步:封面区域(图片 + 固定比例)

1)在卡片里放一个封面 Frame(命名为 Cover)。

2)Cover 的 Auto Layout 不一定要开,但建议把它设置成固定高度(例如 180),宽度跟随父级。

3)把 Cover 的 Resizing 设为:Width = Fill container,Height = Fixed。这样卡片宽度变化时,封面永远铺满。

4)把图片作为 Fill(右侧 Fill → Image)。如果你想要封面始终裁切但保持视觉中心,用 Image 的 Crop 调整焦点。

第二步:文本区(标题 + 描述)

1)在 Cover 下方新增一个内容容器 Frame(命名 Content),开启 Auto Layout,方向 Vertical,Item spacing 6,Width = Fill。

2)标题 Text:建议 16/18px、Medium,Resizing:Width = Fill,Height = Hug contents。

3)描述 Text:建议 12/14px、Regular,设置最多 2~3 行(可以用文本框高度 + Clip content 或者用设计规范约束)。Resizing 同样 Width = Fill。

4)小技巧:标题与描述都不要用固定宽度;让它们 Fill container,卡片就能自然响应。

第三步:标签与元信息(可选但常用)

1)做一个标签行 Frame(命名 Tags),开启 Auto Layout,方向 Horizontal,Item spacing 8,Wrap 可按需要开启(新版本 Figma 支持)。

2)每个 Tag 做成小组件:Auto Layout + Padding(8/4)+ 圆角(999)+ 轻背景色。这样未来换字不会影响整体排版。

3)如果你担心标签过多导致撑高卡片:给 Tags 设 Max height 并 Clip content,或只展示前 2 个标签。

第四步:底部操作区(价格/按钮/收藏)

1)新建 Bottom 行 Frame,Auto Layout Horizontal,Align = Space between,Width = Fill。

2)左侧放价格/时间等元信息(Text 或小组件),右侧放按钮(Button 组件)。

3)按钮组件建议做成:Auto Layout + Padding(12/8)+ 圆角(8)+ 文字居中,并把按钮宽度设为 Hug,避免被拉伸变形。

响应式核心:4 个必须检查的 Resizing

把卡片整体做“可响应”,通常就看这四条:

1)卡片容器:Width = Fixed 或 Fill(视使用场景);Height = Hug。

2)Cover:Width = Fill;Height = Fixed。

3)所有文本:Width = Fill;Height = Hug。

4)底部行:Width = Fill;内部用 Space between 或 Auto Layout 约束。

检查方式:拖动卡片宽度,看标题是否能自动换行、按钮是否保持 Hug、间距是否仍然正确。

组件化:把卡片做成可复用组件

1)选中卡片容器 → Create component。

2)把可变内容做成 Component properties:标题/描述文本、标签开关、按钮文案、价格文案等。

3)封面图片可以用“Swap instance”或保留为 Fill,搭配不同的示例图片;团队里如果有统一素材库,建议把封面做成可替换的嵌套组件。

变体与状态(可选):默认/悬停/禁用

如果你要交付给研发并在设计系统里长期复用,建议加变体:

1)Default:普通描边/阴影。

2)Hover:描边加深或阴影增强(不要同时改太多属性,避免“跳动”)。

3)Disabled:降低不透明度,按钮禁用样式。

用 Variants 管理这些状态,命名如 State=Default/Hover/Disabled。

交付检查清单(做完就能直接用)

1)命名清晰:Card/Cover/Content/Tags/Bottom。

2)Spacing 统一:Padding 与间距使用 4/8 的倍数。

3)文本可换行:标题/描述都允许换行,避免固定宽度。

4)组件属性齐全:至少可改标题/描述/按钮文案。

5)拖拽验证:把卡片宽度从 280 拉到 420,布局不崩。

常见问题排查

Q:为什么拖宽度时内容不跟着变? A:检查子层是否还在 Fixed width,把它们改成 Fill container。

Q:按钮被拉得很宽很丑? A:按钮本体用 Hug contents,并确保所在行用 Space between,而不是让按钮 Fill。

Q:标签太多把卡片撑得很高? A:限制展示数量或给标签行设置最大高度并 Clip。

用户评论 (0)

登录后参与讨论

立即登录 注册账号

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

操作成功