Figma Auto Layout:做一套可复用的卡片组件(从排版到交付)

你将做出什么(成品定义)

目标是在 Figma 里做一套“可复用、可扩展、可交付”的卡片(Card)组件:支持标题/摘要/标签/按钮的开关,支持不同尺寸(S/M/L),并且在内容增减时依然保持对齐与间距一致。

整个过程只用三件套:Auto Layout、样式(Styles)、组件属性/变量(Component Properties / Variables)。

准备:先定一套基础排版与间距规则

在动手画组件前,先把“尺度”定死,后面才不会越做越乱。

推荐一套通用的 8pt 体系:

  • 外边距(Card padding):16
  • 模块间距(Stack spacing):12
  • 文字行距:标题 24/28,正文 20/28(按你的字体实际效果微调)
  • 圆角:12(小卡可 10)

文本样式(Styles)至少准备:Card/ 、Card/Body、Card/ (标签/时间)三种。这样开发对接时能直接映射到 token。

步骤 1:搭建 Card 的结构骨架(Auto Layout)

新建一个 Frame 作为 Card 容器,开启 Auto Layout(纵向)。关键点是“层级清晰 + 约束正确”。

  1. 容器 Frame:Auto Layout = Vertical;Padding = 16;Spacing = 12;Fill = 白色;Stroke = 1px 浅灰;Corner = 12。
  2. 第一行:Header(横向 Auto Layout),放左侧标题组 + 右侧操作区(可选)。Header 的 Align 设为 Space between。
  3. 第二块:Body 文本(可选)。
  4. 第三块: (横向 Auto Layout),放标签 Chips / 日期 / 角标等(可选)。
  5. 最后:Actions(横向 Auto Layout),放主按钮/次按钮(可选)。

尺寸策略:Card 容器宽度建议设为 Fill container(放到列表/栅格里会自动拉伸);高度用 Hug contents。

步骤 2:让内容变化时仍然“看起来对”

卡片最容易崩的地方是:标题换行、正文变长、标签数量增多。解决思路是把“可变的”都交给 Hug/Fill 与最大宽度。

  • 标题文本:Hug contents(高度),宽度设为 Fill container(让它在剩余空间里换行)。
  • 右侧操作区(例如一个图标按钮):固定宽高,避免挤压标题。
  • Body 文本:宽度 Fill;高度 Hug。必要时用 2 行/3 行截断(如果你的团队有统一规则)。
  • 的 Chips:用横向 Auto Layout,开启 Wrap(如果你用的是新版 Figma),或用两行容器解决溢出。

小技巧:当 Header 里既要标题又要图标时,标题所在的 Frame 设为 Fill;图标按钮设为 Fixed。这样标题永远优先占满剩余空间。

步骤 3:把骨架变成组件(Component)并加属性开关

选中 Card 容器,Create component。然后做三类组件属性:

  • Boolean:Show body、Show 、Show actions(对应 3 个模块的显示/隐藏)。
  • Instance swap:右上角操作区(无 / 更多 / 关闭 / 收藏 等)。
  • Text: 、Body、 文案(让使用者在右侧面板直接改)。

做开关时不要直接隐藏文本层,而是隐藏“模块容器 Frame”。这样间距会自动重新计算,避免留下空白。

步骤 4:做尺寸变体(Variants:S / M / L)

在组件上 Add variant,属性名建议叫 Size,值为 S/M/L。每个尺寸只改 3 件事:

  • Padding:S=12,M=16,L=20
  • 标题样式:S 用较小字号/行高,L 用较大字号/行高
  • 模块间距:S=8,M=12,L=16

注意:不要为每个尺寸重做结构。结构保持一致,差异只体现在数字和样式,维护成本才低。

步骤 5:加入状态(默认 / 悬停 / 选中 / 禁用)

如果你的项目需要交互态,建议再加一个 Variant 属性叫 State(Default/Hover/Selected/Disabled)。

  • Hover:提高阴影或加浅色背景(不要同时做太多变化)。
  • Selected:描边变为品牌色,或左侧加一条强调色。
  • Disabled:整体不透明度 40%~60%,并把按钮禁用态一起换掉。

状态的变化尽量只动“外观层”(Fill/Stroke/Shadow),不要改变布局,避免使用时跳动。

交付清单:给开发的 5 条信息(最容易漏)

  1. Card 的外层间距(padding、模块 spacing)与 8pt 体系说明。
  2. 标题/正文/ 的字体样式名称(或对应 token)。
  3. 当 换行、Body 为空、 超出时的规则(换行/截断/Wrap)。
  4. 各个 State 的颜色值(背景/描边/阴影)。
  5. 按钮对齐规则:单按钮靠右还是左右并排;多按钮间距是多少。

常见坑与排查

  • 间距突然变大:检查是否同时在父容器和子容器都加了 padding/spacing。
  • 标题被挤压成一列:确认标题容器是 Fill,右侧操作是 Fixed。
  • 隐藏模块后留白:隐藏的是模块容器而不是里面的文字层。
  • 尺寸变体难维护:只让数字和样式变化,不要复制出不同结构。

你可以直接复用的命名建议

组件:Card/ ;变体属性:Size(S/M/L)、State(Default/Hover/Selected/Disabled);布尔属性:ShowBody、Show 、ShowActions。样式:Card/ 、Card/Body、Card/ 。

用户评论 (0)

登录后参与讨论

立即登录 注册账号

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

操作成功