1. 瀑布流布局的前世今生
作为一名经历过jQuery时代的前端开发者,我至今还记得2012年第一次实现瀑布流布局时的痛苦经历。当时为了在电商网站展示商品卡片,不得不引入Masonry.js这个第三方库,还要处理各种动态加载和响应式适配的问题。十年过去了,虽然CSS Grid和Flexbox已经极大改善了布局能力,但真正的原生瀑布流方案直到现在才姗姗来迟。
1.1 传统实现方案的痛点
在CSS Grid Lanes出现之前,我们通常使用以下几种方式实现瀑布流:
css复制/* 多列方案 */
.masonry {
column-count: 3;
column-gap: 1em;
}
/* Flexbox+JavaScript方案 */
.flex-masonry {
display: flex;
flex-wrap: wrap;
}
这些方案都存在明显缺陷:
- 多列布局的内容是按列顺序排列,而非视觉顺序
- Flexbox需要JavaScript计算位置和高度
- 都需要额外处理响应式断点
- 键盘导航体验差(Tab键会按DOM顺序而非视觉顺序跳转)
特别提醒:使用JavaScript方案时,务必在resize和load事件中添加防抖处理,否则在移动端旋转屏幕时可能导致布局抖动。
1.2 浏览器兼容性现状
截至2023年8月,各浏览器对Grid Lanes的支持情况如下:
| 浏览器 | 支持版本 | 备注 |
|---|---|---|
| Safari | TP 234+ | 需启用实验性功能 |
| Chrome | 正在开发中 | 预计2024年Q1发布 |
| Firefox | 规划中 | 尚未进入开发阶段 |
| Edge | 跟随Chrome | 预计与Chrome同期发布 |
虽然全面支持还需时日,但作为渐进增强的特性,现在就可以在Safar
