跳到正文

瀑布流

Masonry

卡片高度不齐,自动落进最短的那一列,底部不留大洞。

  • 又叫:
  • 瀑布流布局
  • 瀑布流排版
  • 长短卡片错落
  • masonry layout
  • pinterest layout
  • waterfall layout
展厅
布局与结构
形态
固定舞台
播放
手动触发
关键词
纯 CSS / 可以直接用
↕ 自己动手试试
L-03形态 固定舞台播放 手动触发Masonry

参数工作台

复制给 AI

随参数实时更新

做一个瀑布流(masonry)列表:3 列,列间距 10px,条目高度围绕 64px 参差排布,每个条目加 break-inside: avoid,别让卡片被从中间劈开跨列;顺序按列从上往下填,窄屏自动降到 2 列。不要用固定高度把每格拉齐,那就不是瀑布流了。

什么时候用

  • 图片墙、作品集、商品流,每个条目高度参差不齐
  • 想在一屏里多塞几条内容,又不想把每张图都裁成同一高度
  • 信息流按列填充比按行排列更省竖向空间

适用场景:列表 / 卡片 / 页面

推荐取值

列数
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

参考

相关展品