使用CSS Grid可高效实现宫格布局,通过grid-template-columns和grid-auto-rows定义行列,结合repeat、minmax和aspect-ratio实现等宽高、自适应与正方形单元格。

要快速实现宫格效果,CSS Grid 是最直接高效的方式。通过几行代码就能生成等宽等高的网格单元,适用于九宫格、图片墙、图标列表等常见布局场景。
使用 grid-template-columns 和 grid-auto-rows
核心思路是定义列数并让每行高度自动相等。比如实现一个 3×3 的宫格,可以这样写:
.grid-container {display: grid;
grid-template-columns: repeat(3, 1fr);
grid-auto-rows: 100px;
}
说明:
- repeat(3, 1fr) 表示创建 3 列,每列平均分配容器宽度
- grid-auto-rows: 100px 设定每行高度为固定值,保证等高
- 如果希望高度也自适应,可设为 minmax(100px, auto)
自动填充与响应式适配
想让宫格根据容器大小自动调整列数?用 repeat(auto-fill) 配合 minmax() 更灵活:
立即学习“前端免费学习笔记(深入)”;
.grid-container {display: grid;
grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
grid-auto-rows: 100px;
gap: 10px;
}
优势:
- 容器宽度变化时,自动增减每行的列数
- 每个格子最小 100px,小于该值就换行
- gap 属性设置间距,无需额外 margin 计算
保持格子为正方形(宽高比一致)
很多宫格需要正方形单元格。利用 CSS 自定义属性或伪元素技巧可实现:
.grid-container {display: grid;
grid-template-columns: repeat(3, 1fr);
}.grid-item {
height: 0;
padding-bottom: 100%; /* 宽高比 1:1 */
position: relative;
}.grid-item-content {
position: absolute;
top: 0; left: 0; right: 0; bottom: 0;
}
或者现代浏览器可用 aspect-ratio 简化:
.grid-item {width: 100%;
aspect-ratio: 1 / 1;
}
基本上就这些。Grid 布局让宫格实现变得极其简洁,不复杂但容易忽略细节。合理运用 repeat、auto-fill 和 aspect-ratio,能快速搭建各种自适应宫格结构。










