L-03
瀑布流
Masonry
卡片高度不齐,自动落进最短的那一列,底部不留大洞。
- 又叫:
- 瀑布流布局
- 瀑布流排版
- 长短卡片错落
- masonry layout
- pinterest layout
- waterfall layout
- 展厅
- 布局与结构
- 形态
- 固定舞台
- 播放
- 手动触发
- 关键词
- 纯 CSS / 可以直接用
L-03形态 固定舞台播放 手动触发Masonry
参数工作台
复制给 AI
随参数实时更新做一个瀑布流(masonry)列表:3 列,列间距 10px,条目高度围绕 64px 参差排布,每个条目加 break-inside: avoid,别让卡片被从中间劈开跨列;顺序按列从上往下填,窄屏自动降到 2 列。不要用固定高度把每格拉齐,那就不是瀑布流了。
masonry layout, CSS multi-column with column-count: 3, column-gap: 10px, items of varying height around 64px with break-inside: avoid, fill columns top-to-bottom, collapse to 2 columns on narrow screens, do not equalize item heights
https://publieople.github.io/design-museum/entry/masonry/?stage=light
链接带着你调好的参数
什么时候用
- 图片墙、作品集、商品流,每个条目高度参差不齐
- 想在一屏里多塞几条内容,又不想把每张图都裁成同一高度
- 信息流按列填充比按行排列更省竖向空间
适用场景:列表 / 卡片 / 页面
推荐取值
- 列数
- 2 列(窄屏)/ 3 列(≥1024px)
- 列间距
- 12–24px
- 条目下间距
- 与列间距保持一致
- 防止跨列
- break-inside: avoid
别搞混
和「普通网格 grid」的区别
grid 的行是所有列共享的,同一行的卡片从同一条水平线开始,矮卡片下方留空;瀑布流每列各自堆叠,下一张紧接上一张下面,列与列之间不共享行线。
和「等高等宽卡片墙」的区别
那种是规则网格,看上去整整齐齐;瀑布流的看点恰恰是高度参差、按列填充。
容易踩的坑
- CSS 多列(column-count)是列优先填充:内容先填满第一列再进第二列,做无限滚动时新内容会全挤在最后一列,需要改成用 JS 每次插入当前最短的那一列
- 多列布局里每个条目要写 break-inside: avoid,否则卡片会被从中间劈开、跨到下一列去
- 不要为了对齐给卡片固定高度,那样就退化成普通网格了
- 列数只在断点处切换,不要跟着容器宽度实时变,否则拖动窗口时卡片会来回跳
无障碍降级
瀑布流是静态排版,不产生动效;若条目带入场动画,prefers-reduced-motion: reduce 时直接以最终排布出现。
关键词
- CSS multi-column
- column-count
- break-inside: avoid
- masonry layout
- shortest column
- grid-auto-rows