定义列和行

使用 grid-template-columns/rows 定义网格的列和行

.grid {
  display: grid;
  grid-template-columns: 100px 200px 100px;
  grid-template-rows: 80px 120px;
}

1. 固定尺寸(Fixed Size)

语法:grid-template-columns: 100px 200px 100px;
使用固定的像素值定义每列的宽度
100px
200px
100px
4
5
6

2. 弹性单位 fr(Flexible Unit)

语法:grid-template-columns: 100px 1fr;
1fr 表示占据剩余空间的 1 份,会自动伸缩
100px 固定
1fr 自动填充剩余空间
100px
1fr

3. minmax() 函数

语法:grid-template-columns: minmax(100px, 1fr) minmax(200px, 2fr);
定义最小值和最大值,列宽在这个范围内自适应
minmax(100px, 1fr)
minmax(200px, 2fr)
最小 100px
最小 200px,最大 2 倍空间

4. fit-content() 函数

语法:grid-template-columns: fit-content(200px) 1fr fit-content(150px);
根据内容自适应,但不超过指定的最大值
fit-content(200px)
1fr 填充
fit-content(150px)

5. repeat() 函数

语法:grid-template-columns: repeat(3, 200px);
重复创建相同尺寸的列,等同于 200px 200px 200px
200px
200px
200px
4
5
6

6. auto-fill 自动填充

语法:grid-template-columns: 200px repeat(auto-fill, 100px) 300px;
自动填充尽可能多的列,适合响应式布局
200px 固定
auto-fill 100px
auto-fill 100px
300px 固定

7. 混合使用(Mixed)

语法:grid-template-columns: 100px 1fr 2fr 100px;
可以混合使用固定值和弹性单位,2fr1fr 的两倍宽度
100px
1fr
2fr (两倍)
100px
常用语法总结:

/* 固定尺寸 */
grid-template-columns: 100px 200px 100px;

/* 弹性单位 fr */
grid-template-columns: 100px 1fr;
grid-template-columns: 1fr 2fr 1fr;

/* minmax() 函数 */
grid-template-columns: minmax(100px, 1fr);

/* fit-content() 函数 */
grid-template-columns: fit-content(40%);

/* repeat() 函数 */
grid-template-columns: repeat(3, 200px);
grid-template-columns: repeat(3, 1fr);

/* auto-fill / auto-fit */
grid-template-columns: repeat(auto-fill, 100px);
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));

/* 命名网格线 */
grid-template-columns: [line-name] 100px [line-name2];

/* 混合使用 */
grid-template-columns: 200px repeat(auto-fill, 100px) 300px;
grid-template-columns: 100px 1fr 2fr 100px;