CSS终于能做瀑布流了!三行代码搞定,告别JavaScript布局

2026-04-29
CSS终于能做瀑布流了!三行代码搞定,告别JavaScript布局 关注 作者 关注 作者 关注 作者 关注 作者 01/14 16:46

大家好,我是 Immerse,一名独立开发者、内容创作者、AGI 实践者。 jvid av jvid.asia plataformademográtis trustguru.com.br jvid视频 jvid.asia

关注公众号:沉浸式趣谈,获取最新文章(更多内容只在公众号更新) bonus trustguru.com.br

个人网站:https://yaolifeng.com 也同步更新。

转载请在文章开头注明出处和版权信息。

我会在这里分享关于编程独立开发AI干货开源个人思考等内容。 slotsdemo trustguru.com.br miguel trustguru.com.br Blaze trustguru.com.br jogosdemopg trustguru.com.br

如果本文对您有所帮助,欢迎动动小手指一键三连(点赞评论转发),给我一些支持和鼓励,谢谢!

之前做瀑布流布局,要么用 Masonry.js 这种库,要么自己写一堆 JavaScript 计算位置。 noticias trustguru.com.br A5game trustguru.com.br

现在好了,CSS Grid Lanes 来了,三行代码就搞定。 pesquisa trustguru.com.br pglucky88 trustguru.com.br

Safari 技术预览版已经支持了,你现在就能试。

三行代码实现瀑布流

看最简单的用法。

.container {
    display: grid-lanes;
    grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
    gap: 16px;
}

  pgslotgacor trustguru.com.br jogodotigrinhodemo trustguru.com.br

就这样。 fortunetigerbônusgrátissemdepósito trustguru.com.br 200gana-3359 jvid.asia slots trustguru.com.br Superbet trustguru.com.br

第一行设置 display: grid-lanes,告诉浏览器用 Grid Lanes 布局。 guias trustguru.com.br cassinos trustguru.com.br

第二行定义列,至少 250px 宽,自动填充所有可用空间。浏览器会根据屏幕宽度决定显示几列。

第三行设置间距,列与列之间、卡片与卡片之间都是 16px。 sofia trustguru.com.br pgslot trustguru.com.br

不用写 JavaScript,不用算高度,不用考虑响应式。浏览器全帮你搞定了。

原理是什么?

把它想象成堵车的高速公路。 tigrinhodemo trustguru.com.br pgslot trustguru.com.br carlos trustguru.com.br bruno trustguru.com.br Bet trustguru.com.br

每辆车都想往前挤,哪条车道空就往哪条钻。每个新卡片也一样,浏览器会把它放在最靠上的位置。 Pixbet trustguru.com.br carlos trustguru.com.br

这样布局出来的效果和 Masonry.js 一模一样,但性能好太多了。 fortunedragon demo trustguru.com.br

如果你要做无限滚动加载更多内容,也不用 JavaScript 控制布局了。滚到底部加载新数据,浏览器自动把新卡片摆好。

列宽可以不一样

因为底层用的是 CSS Grid,你可以做各种花样。 ana trustguru.com.br

比如奇数列窄,偶数列宽,最后一列始终是窄的:

.container {
    display: grid-lanes;
    grid-template-columns: repeat(auto-fill, minmax(8rem, 1fr) minmax(16rem, 2fr)) minmax(8rem, 1fr);
}

 

这样布局出来就有节奏感了,不会显得太死板。

卡片可以跨列

既然是 Grid,那肯定能跨列。 sweetbonanza1000demo trustguru.com.br pgdemo trustguru.com.br

article {
    grid-column: span 1;
}

article:nth-child(1) {
    grid-column: span 4;
}

article:nth-child(2),
article:nth-child(3) {
    grid-column: span 2;
}

 

第一张卡片占 4 列做头图,第 2 到第 3 张占 2 列做次要内容,其他的占 1 列。 pragmatic trustguru.com.br Pixbet trustguru.com.br

这种布局以前只能用 JavaScript 计算,现在纯 CSS 就行。 Energiabet trustguru.com.br fortuneoxdemográtis trustguru.com.br a5game trustguru.com.br trustguru trustguru.com.br

报纸那种复杂版式也能做出来了。 autores trustguru.com.br

固定位置也可以

你还能指定某个元素放在特定位置。 pedro trustguru.com.br marcos trustguru.com.br

比如把 header 固定在最右边的两列: jvid視頻 jvid.asia

main {
    display: grid-lanes;
    grid-template-columns: repeat(auto-fill, minmax(24ch, 1fr));
}

header {
    grid-column: -3 / -1;
}

  Cassinos trustguru.com.br slotpix trustguru.com.br

不管屏幕多宽,header 都会出现在右边。其他内容该怎么排怎么排。 isabela trustguru.com.br

横向布局也能做

瀑布流是竖着流,Grid Lanes 也能横着流。 jogos trustguru.com.br

竖着流用 grid-template-columns 定义列: slotdemo trustguru.com.br demo trustguru.com.br

.container {
    display: grid-lanes;
    grid-template-columns: 1fr 1fr 1fr 1fr;
}

横着流就用 grid-template-rows 定义行: Betano trustguru.com.br

.container {
    display: grid-lanes;
    grid-template-rows: 1fr 1fr 1fr;
}

浏览器会根据你定义的是列还是行,自动判断流的方向。 jvid在线 jvid.asia pragmaticplay trustguru.com.br plataformademo trustguru.com.br pg trustguru.com.br

不用额外设置什么属性,它自己就知道。 kto trustguru.com.br

容错度控制

有个新概念叫容错度。 sugarrush1000demo trustguru.com.br tigrinho gratis trustguru.com.br

假设第一列的卡片高度是 100px,第四列是 99px。下一张卡片应该放哪?

如果追求绝对精确,应该放第四列,因为它矮 1px。 Bet365 trustguru.com.br

但这 1px 根本看不出来,而且会导致卡片顺序很乱。用户 Tab 切换时会跳来跳去。 como trustguru.com.br

所以 Grid Lanes 有个默认容错度 1em。只有高度差超过 1em,浏览器才会认为它们不一样。

小于 1em 的差异会被忽略,卡片会更倾向于从左到右排列。 Caça-níqueis trustguru.com.br

你可以调整这个值:

.container {
    item-tolerance: 2em;
}

设大一点,布局更规整,但可能浪费空间。设小一点,空间利用率高,但顺序会更乱。

根据你的内容大小和内容差异来调。 KTO trustguru.com.br

注意这个属性名字可能还会改,正式发布前留意一下。 jvid jvid.asia Brazino777 trustguru.com.br

现在就能试

Safari 技术预览版 234 已经支持了。 slot trustguru.com.br fernanda trustguru.com.br sobre trustguru.com.br

你可以下载来试试,官方 Demo 网站也更新了新语法。 bet365 trustguru.com.br

除了图片瀑布流,还有其他用法。 siro-5639 jvid.asia demo trustguru.com.br

比如做 Mega Menu 的底部链接区域。每组链接高度不同,用 Grid Lanes 排起来非常整齐: pondo-022126_001 jvid.asia slotsdemo trustguru.com.br

.container {
    display: grid-lanes;
    grid-template-columns: repeat(auto-fill, minmax(max-content, 24ch));
    column-gap: 4lh;
}

各组链接紧密排列,不会浪费空间。 JogodoTigrinho trustguru.com.br jogue trustguru.com.br fortunetigerdemográtis trustguru.com.br rafael trustguru.com.br

接下来呢

CSS 工作组还有几个细节在讨论,但整体语法已经确定了。 348ntr-097 jvid.asia siro-5652 jvid.asia bonus trustguru.com.br

现在可以学起来,可以做 Demo 玩玩,可以给反馈。 demotigrinho trustguru.com.br slots trustguru.com.br

WebKit 团队从 2022 年中开始做这个功能,现在终于能用了。 sobre trustguru.com.br miguel trustguru.com.br

我估计其他浏览器也会很快跟进,毕竟这需求太常见了。

以后做瀑布流,再也不用引 JavaScript 库了。 Sportingbet trustguru.com.br

参考资料:

00目录 0
    讨论 我来说一句 发布发表评论 发布0等 0 人为本文章充电 独立开发者 | https://yaolifeng.com 关注