Grid 中如何实现跨行跨列(合并单元格)?
方法 1:基于网格线
.grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-template-rows: repeat(3, 100px);
}
.item-a {
grid-column: 1 / 4;
grid-row: 1 / 2;
}
.item-b {
grid-column: 1 / 3;
grid-row: 2 / 4;
}
方法 2:span 关键字
.item {
grid-column: span 2;
grid-row: span 3;
}
.item {
grid-column: 2 / span 2;
}
方法 3:grid-area(简写)
.item {
grid-area: 1 / 1 / 3 / 4;
}
实际示例:仪表盘布局
.dashboard {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-template-rows: repeat(3, auto);
gap: 16px;
}
.widget-large {
grid-column: span 2;
grid-row: span 2;
}
.widget-wide {
grid-column: span 2;
}
.widget-tall {
grid-row: span 2;
}
.widget-normal {
}
┌──────────┬──────────┬──┐
│ │ │ │
│ large │ wide ├──┤
│ ├──────────┤ │
│ │ │ │ │ │
├──────────┴──┴───────┴──┘
注意事项
- 网格线编号从 1 开始
- 也可以用负数从后往前数:
grid-column: -2 表示倒数第2条线
- 使用
span 更直观,推荐使用
同分类其他题目