grid-template-columns和grid-template-rows定义网格列宽行高,使用px、fr、%、repeat()、minmax()等单位函数布局,如两列三行结构可实现侧边栏+头部+内容+底部的自适应布局。

在CSS Grid布局中,grid-template-columns 和 grid-template-rows 是两个核心属性,用于定义网格的列宽和行高。它们决定了网格容器内部有多少列或行,以及每列/每行的具体尺寸。
grid-template-columns:定义列的宽度
该属性用于设置网格容器中每一列的宽度。你可以用固定单位(如px)、相对单位(如fr、%)或函数(如repeat())来定义。
常见用法包括:
- 使用固定值:比如 grid-template-columns: 100px 200px 100px; 表示三列,宽度分别为100px、200px、100px。
- 使用fr单位:fr代表“fraction”,即可用空间的份数。例如 grid-template-columns: 1fr 2fr; 表示两列,第二列是第一列的两倍宽。
- 混合单位:可以混合使用不同单位,如 grid-template-columns: 100px 1fr 2fr;,第一列为固定100px,其余空间按1:2分配给后两列。
- 使用repeat():简化重复结构。比如 grid-template-columns: repeat(3, 1fr); 等同于 1fr 1fr 1fr,适合创建等宽列。
grid-template-rows:定义行的高度
这个属性用来设置网格中每一行的高度,语法和行为与 grid-template-columns 非常相似。
立即学习“前端免费学习笔记(深入)”;
常用方式有:
- 固定高度:如 grid-template-rows: 50px 100px; 创建两行,高度分别为50px和100px。
- 使用fr单位:比如 grid-template-rows: 1fr 1fr; 让两行均分容器高度。
- 使用auto:自动根据内容调整行高,例如 grid-template-rows: auto 1fr; 第一行适应内容,第二行占剩余空间。
- 结合minmax():控制最小最大尺寸,如 grid-template-rows: minmax(60px, auto) 1fr; 确保第一行至少60px高。
实际例子:一个简单网格布局
假设要创建一个两列三行的布局,左侧窄栏固定200px,右侧自适应;三行中顶部和底部固定高度,中间占满剩余空间。
.container {display: grid;
grid-template-columns: 200px 1fr;
grid-template-rows: 80px 1fr 60px;
}
这样就形成了常见的侧边栏+头部+内容+底部的结构,无需额外媒体查询也能保持弹性。
基本上就这些。掌握这两个属性,就能构建出大多数常见的二维网格布局。关键是理解fr单位的分配机制,以及如何结合repeat()、minmax()等函数提升编写效率。不复杂但容易忽略细节。










