grid-auto-flow 属性控制网格项自动排列方向,row 优先横向填满每行,column 优先纵向填满每列,前者为默认值,常与 grid-auto-columns 和 grid-auto-rows 配合定义隐式轨道大小。

在 CSS Grid 布局中,grid-auto-flow 属性用来控制自动放置的网格项(grid items)如何被分配到网格容器中的空白区域。当没有明确指定某些网格项的位置时,浏览器会根据 grid-auto-flow 的设置来决定它们是按行排列还是按列排列。
grid-auto-flow: row(默认行为)
当设置为 row 时,浏览器会优先填满每一行。也就是说,系统会先从左到右填充当前行中的可用轨道,如果当前行满了,就移动到下一行继续填充。
这种模式适用于大多数从左到右、从上到下的内容布局场景。
- 新项目优先填入当前行的下一个空列
- 只有当前行没有剩余空间时,才会换到下一行
- 这是 grid-auto-flow 的默认值,不需要显式声明
.grid-container {
display: grid;
grid-template-columns: 100px 100px;
grid-auto-flow: row;
}
grid-auto-flow: column
当设置为 column 时,浏览器会优先填满每一列。系统会从上到下填充当前列中的空格,当前列无法再容纳更多项目时,才向右移动到下一列。
立即学习“前端免费学习笔记(深入)”;
这种方式适合需要纵向扩展的内容结构,比如垂直时间轴或固定行数的表格类布局。
- 新项目优先填入当前列的下一行位置
- 当前列已满后,才会创建新列并向右扩展
- 需要显式设置才能启用该行为
.grid-container {
display: grid;
grid-template-rows: 100px 100px;
grid-auto-flow: column;
}
实际区别总结
关键区别在于填充方向的优先级不同:
- row:横向优先,一行一行地填
- column:纵向优先,一列一列地填
这个属性通常和 grid-auto-columns 与 grid-auto-rows 配合使用,以便在隐式创建轨道时定义大小。
基本上就这些,不复杂但容易忽略细节。










