Figma 用 Auto Layout 做可伸缩卡片组件:从约束到可复用变体

你将做出什么

我们要做一个「卡片组件」,它可以在不同容器宽度下自动拉伸:图片/标题/描述/按钮保持合理间距;并且用 Variants 管理默认/悬停/选中三种状态,最终可以直接丢进设计系统复用。

准备:画板与网格

1)新建一个 Frame(建议 1440 宽)。

2)在右侧 Layout grid 添加 12 栏(可选)。本教程重点不在网格,但网格能帮助你验证组件在不同宽度下的表现。

第一步:搭出卡片骨架(Auto Layout 外层)

1)新建一个 Frame 作为卡片容器,命名为 Card

2)选中 Card,按 Shift + A 添加 Auto Layout。

3)设置:方向 Vertical;Padding 16/16/16/16;Item spacing 12;对齐 Left & Top。

4)给 Card 加样式:填充 #FFFFFF;描边 1px #E6E8EC;圆角 12;投影(轻微)。

第二步:内容区分层(图片区 + 文本区 + 操作区)

我们把卡片拆成三块:

1)Media:顶部图片(或占位)。

2)Body:标题+描述。

3)Actions:按钮/标签。

做法:

1)在 Card 内插入一个矩形作为图片占位,命名 Media,建议高度 160。

2)再插入一个 Frame 命名 Body,给它 Auto Layout(Vertical),间距 6。

3)在 Body 里放标题( )与描述(Desc)。标题建议 16-18px;描述 12-14px,行高更松一点。

4)插入一个 Frame 命名 Actions,给 Auto Layout(Horizontal),间距 8;放一个主按钮和一个次按钮(或 Tag)。

第三步:关键设置——让卡片可伸缩(Hug / Fill / Fixed)

这是成败关键。目标是:卡片宽度跟随容器变化,内部元素该填充的填充、该拥抱内容的拥抱。

1)Card:宽度设为 Fill container

把 Card 放到一个外层容器里(例如页面列容器),然后把 Card 的 Width 改为 Fill container,高度保持 Hug。

2)Media:宽度 Fill,高度 Fixed

Media 宽度 Fill;高度保持固定(160/180 都可以)。如果你用图片,建议把图片的约束设为 Fill 并打开裁切(Crop)。

3)Body:宽度 Fill,高度 Hug

Body 是文本容器,宽度 Fill 让它吃满卡片;高度 Hug 由文本决定。

4) /Desc:宽度 Fill

把 和 Desc 的宽度设为 Fill,这样当卡片变宽时文字行宽能跟着变化;同时 Desc 记得开启自动换行。

5)Actions:宽度 Fill;按钮策略

Actions 建议宽度 Fill,主按钮可以设置为 Hug(看内容),也可以设置为 Fill(让主按钮拉伸)。常见做法:主按钮 Fill,次按钮 Hug,这样层级更清晰。

第四步:做三种状态(Variants)

1)选中 Card 组件,右键 Create component

2)在右侧点击 Add variant,创建 3 个:

- State=Default

- State=Hover

- State=Selected

3)在 Hover 状态:轻微提升阴影、描边略深(例如 #D0D5DD)。

4)在 Selected 状态:描边改为品牌色(例如 #2F6BFF),背景可加淡色底(5% 透明)。

第五步:交互(可选,但很实用)

如果你希望组件在原型里能真实演示:

1)进入 Prototype 模式。

2)Default → On hover 切到 Hover。

3)Hover → Mouse leave 切回 Default。

4)点击卡片(On click)切到 Selected;Selected 再点击切回 Default(或用切换变量)。

第六步:检查清单(避免“看似能用,实际不可复用”)

发布前建议你做 3 个拉伸测试:

1)把卡片放到 320 宽容器里(模拟手机),看标题是否溢出、按钮是否挤压。

2)把卡片放到 720 宽容器里(两栏),看描述行宽是否太长(必要时给 Body 加最大宽度或调整字体)。

3)把卡片放到 1200 宽容器里(单栏),看 Media 是否需要更高,或是否应该改为左右结构(那就是另一个变体了)。

命名与发布建议

1)组件命名:Card / State=Default 这样的结构更便于团队搜索。

2)把关键约束写在组件说明里:Card=Fill,Body=Fill, /Desc=Fill,Media=Fixed height。

3)如果你有设计系统,建议把按钮也引用同一套 Button 组件,避免卡片里出现“孤儿按钮样式”。

用户评论 (0)

登录后参与讨论

立即登录 注册账号

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

操作成功