Figma 网格与自动布局:做出可复用的响应式卡片组件(从 0 到交付)

你将完成什么

目标是做出一张“信息卡片(Card)”组件:包含封面图、标题、描述、标签、按钮/价格区,并且能在不同宽度下自动换行、自动拉伸、保持间距一致。最后把它做成可复用组件(含变体/约束),并整理成开发可读的交付说明。

准备:统一网格与排版(5 分钟)

1)建立 8pt 规则。 在 Figma 里绝大多数间距用 8 的倍数(8/16/24/32),小间距可用 4。这样 Auto Layout 的 padding/spacing 更规律,页面也更“干净”。

2)设置 Layout Grid。 选中 Frame(画板)→ 右侧 Layout grid → 选择 Columns。推荐:桌面端 12 列,Margin 80,Gutter 24;移动端 4 列,Margin 16,Gutter 16。数值不绝对,但要保持同一项目一致。

3)建立文字样式。 至少准备 3 个:标题(16/20 或 18/24)、正文(14/20)、辅助信息(12/16)。并命名如:Text/ , Text/Body, Text/ 。

第一步:搭建 Card 外层结构(Auto Layout)

1)创建容器。 新建一个 Frame,尺寸先随意(例如 320×420)。把它改成 Auto Layout(Shift + A)。方向选择“垂直(Vertical)”。

2)设置 padding 与间距。 Container padding:16;Item spacing:12。对齐方式:左对齐。这样就有了基本的节奏感。

3)添加圆角与描边。 Corner radius:12;Stroke:1px #E6E6E6;Fill:#FFFFFF。阴影可选(轻微):0, 4, 16, 10% 黑。

第二步:放入封面图,做出“可裁切但不变形”的效果

1)封面作为独立 Frame。 在容器最上方插入一个 Frame,命名为 Cover。高度建议 160(移动端)或 180(桌面卡片)。宽度让它 Fill container。

2)给 Cover 放图片。 把图片拖进去或用 Fill → Image。关键:Image 的 Scale 模式选 Fill(铺满裁切),而不是 Fit(留白)。

3)裁切圆角。 如果 Card 外层有圆角,Cover 顶部圆角要一致(12),底部可为 0,避免中间出现重复圆角。

第三步:标题 + 描述的文字区(支持自适应高度)

1)创建 TextStack。 新建一个 Frame 作为文字区,改为 Auto Layout(Vertical)。Item spacing:6;宽度 Fill container。

2)标题( )。 文本对齐左;Width 设为 Fill container;Text 设置为“Auto height”。这样标题换行会自动增高。

3)描述(De ion)。 使用正文样式 14/20。建议限制为 2-3 行:可以用组件变体(短/长),或在实际使用时由内容控制。

第四步:标签与按钮区(让它在宽度变化时自动换行)

1)标签容器(TagWrap)。 新建一个 Auto Layout(Horizontal)容器,勾选 Wrap(自动换行)。Spacing 建议:行间距 8,列间距 8。

2)制作一个 Tag 子组件。 Tag 用 Auto Layout(Horizontal),padding:横向 10,纵向 6;圆角 999;背景浅灰;文字 12/16。这样 Tag 自适应文本长度。

3)底部操作区(Actions)。 用 Auto Layout(Horizontal):左侧放价格/状态(可选),右侧放按钮。按钮做成组件:padding 12×8,最小高度 36,圆角 10。

第五步:约束与响应式(关键)

1)所有内部主容器宽度用 Fill container。 Cover、TextStack、TagWrap 都设为 Fill。不要手动固定宽度,否则一拉伸就乱。

2)高度尽量 Auto。 Card 外层高度用 Hug contents(根据内容撑开)。封面高度可固定(比如 160)。

3)对齐策略。 垂直堆叠区域用 Left;底部 Actions 用 Space between(左右分散)。

第六步:把 Card 做成组件 + 变体(可交付)

1)组件化。 选中整个 Card → Create component。命名:Component/Card。

2)做 3 个常用变体。

  1. Size:S / M(通过 padding、封面高度、字号微调)。
  2. State:Default / Hover(Hover 仅加轻微阴影或描边加深)。
  3. WithCover:Yes / No(无封面时隐藏 Cover,注意保留顶部间距一致)。

3)可替换内容(Overrides)。 确保标题、描述、标签文本都可在实例里直接改;图片为可替换 Fill。

第七步:开发交付清单(复制就能用)

为了减少来回沟通,把以下信息写在组件旁边(或放到一个“Hand-off”页):

  1. 卡片外层:圆角 12,描边 1px #E6E6E6,padding 16,间距 12。
  2. 封面:高度 160,图片填充模式 Fill;顶部圆角 12。
  3. 标题:16/20(或 18/24),Auto height;描述:14/20。
  4. 标签:12/16,padding 10×6,圆角 999,TagWrap 支持 Wrap,间距 8。
  5. 按钮:最小高度 36,padding 12×8,圆角 10;Actions 行用 Space between。

如果开发使用 CSS/Flutter/React:重点强调“外层垂直布局 + 文字自适应高度 + 标签容器可换行 + 内边距与间距按 8pt”。

常见坑与排查

  1. 拉伸后元素漂移:检查子层是否 Fill container;是否用了固定宽度。
  2. 文字把布局顶乱:标题/描述要 Auto height;不要用固定高度文本框。
  3. 标签不换行:确认 TagWrap 勾选 Wrap;并且 Tag 自身宽度 Hug。
  4. 间距不统一:回到 8pt 规则,优先用 8/16/24。

你可以继续扩展的方向

把 Card 拓展为列表项、弹窗卡片、商品卡片,并把颜色/字号抽成变量(Styles + Variables)。当组件库越来越大时,命名规则和一致的间距系统会比“视觉炫酷”更能省时间。

用户评论 (0)

登录后参与讨论

立即登录 注册账号

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

操作成功