在CSS Grid布局体系中,grid-auto-rows属性用于定义那些被隐式创建的网格行的尺寸,当我们在网格容器中放置的子元素数量超过了显式定义的行数时,浏览器会自动创建新的行,这些行的高度就由grid-auto-rows来决定。如果要实现所有隐式行的等高效果,只需要给这个属性设置一个固定的长度值即可。

grid-auto-rows的基本语法
grid-auto-rows的常用取值包括固定长度、百分比、fr单位以及minmax()函数,要实现等高行,最常用的是固定长度取值,语法格式如下:
/* 设置所有隐式行高度为100px */
.grid-container {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-auto-rows: 100px;
}
实现等高行的具体步骤
1. 创建网格容器
首先需要将父元素设置为grid布局,同时定义列的规则,这里可以先不定义显式的行高,或者只定义部分显式行高,剩余的行由隐式规则控制。
/* 基础网格容器样式 */
.container {
display: grid;
/* 定义3列,每列等宽 */
grid-template-columns: repeat(3, 1fr);
/* 可选:定义显式行高,显式行也会保持等高 */
grid-template-rows: repeat(2, 120px);
/* 隐式行高度设置为120px,和显式行保持一致实现全等高 */
grid-auto-rows: 120px;
gap: 10px;
}
2. 添加网格子元素
子元素不需要额外设置高度,会自动填充到网格单元格中,当子元素数量超过显式定义的行能容纳的数量时,超出的子元素会进入隐式行,隐式行的高度由grid-auto-rows决定。
<div class="container">
<div class="item">项目1</div>
<div class="item">项目2</div>
<div class="item">项目3</div>
<div class="item">项目4</div>
<div class="item">项目5</div>
<div class="item">项目6</div>
<div class="item">项目7</div>
</div>
/* 子元素基础样式 */
.item {
background-color: #e0e0e0;
padding: 10px;
display: flex;
align-items: center;
justify-content: center;
}
不同取值的等高效果差异
grid-auto-rows的不同取值会带来不同的等高效果,我们可以通过下面的表格对比:
| 取值类型 | 效果说明 | 适用场景 |
|---|---|---|
| 固定长度(如100px) | 所有隐式行高度固定为指定值,完全等高 | 需要严格统一行高的场景 |
| 百分比(如20%) | 行高为网格容器高度的20%,容器高度固定时实现等高 | 容器高度已知,需要按比例设置行高 |
| fr单位(如1fr) | 隐式行会和显式行中的fr行分配剩余空间,高度一致 | 需要隐式行和显式fr行等高的场景 |
| minmax(100px, auto) | 隐式行最小高度为100px,内容超出时会自动增高,不再等高 | 需要最小行高保证,内容可撑高行的场景 |
注意事项
- grid-auto-rows只控制隐式创建的行,显式定义的行高由
grid-template-rows控制,如果要所有行等高,需要把两个属性的取值设置为一致。 - 如果子元素内容高度超过了grid-auto-rows设置的值,默认情况下内容会溢出,可给子元素设置
overflow: hidden或者overflow: auto处理。 - 当网格容器设置了
grid-auto-flow: dense时,grid-auto-rows的等高规则依然生效,只是子元素的排列顺序会优化填充空白单元格。
完整示例代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>grid-auto-rows等高行示例</title>
<style>
.container {
display: grid;
grid-template-columns: repeat(3, 1fr);
/* 显式定义2行,高度120px */
grid-template-rows: repeat(2, 120px);
/* 隐式行高度120px,和显式行保持一致 */
grid-auto-rows: 120px;
gap: 10px;
width: 800px;
margin: 20px auto;
}
.item {
background-color: #4CAF50;
color: white;
padding: 10px;
display: flex;
align-items: center;
justify-content: center;
border-radius: 4px;
}
</style>
</head>
<body>
<div class="container">
<div class="item">项目1</div>
<div class="item">项目2</div>
<div class="item">项目3</div>
<div class="item">项目4</div>
<div class="item">项目5</div>
<div class="item">项目6</div>
<div class="item">项目7</div>
<div class="item">项目8</div>
</div>
</body>
</html>
上面的示例中,前6个项目会填充到显式定义的2行3列中,第7、8个项目会进入隐式行,隐式行的高度和显式行都是120px,最终所有行的高度完全一致,实现了等高行的效果。
CSS Gridgrid-auto-rows等高行布局网格布局修改时间:2026-06-19 14:24:19