通过grid-column和grid-row可精确控制网格项位置,支持线号、span跨越及负数定位,实现灵活二维布局。

在使用 CSS Grid 布局时,精确控制子元素的位置是关键。通过 grid-column 和 grid-row 属性,可以灵活地将网格项放置在指定的行和列上,而不依赖于它们在 HTML 中的顺序。这种方式让布局更加直观且易于维护。
理解 grid-column 与 grid-row
grid-column 和 grid-row 是简写属性,用于定义网格项在网格中的起始和结束位置。
基本语法:
- grid-column:
/ ; - grid-row:
/ ;
也可以只设置起始线,浏览器会自动占据一个轨道。
立即学习“前端免费学习笔记(深入)”;
通过线号定位元素
网格容器中的每条垂直线和水平线都有编号,从 1 开始。你可以根据这些线号来放置元素。
示例:
display: grid;
grid-template-columns: 100px 100px 100px;
grid-template-rows: 50px 50px;
}
.item1 {
grid-column: 1 / 3;
grid-row: 1 / 2;
}
.item2 {
grid-column: 3 / 4;
grid-row: 1 / 3;
}
上面代码中,item1 占据第1到第3列(跨两列),位于第一行;item2 从第3列开始,跨一行但跨两行高度。
使用 span 关键字合并单元格
不想计算结束线?可以用 span 指定跨越几个轨道。
- grid-column: 2 / span 2; — 从第2条线开始,向右跨2列
- grid-row: 1 / span 3; — 从第1行开始,向下跨3行
这种写法更直观,尤其适合动态或响应式布局。
实用技巧与注意事项
实际开发中,结合命名线或区域可提升可读性,但仅用 grid-column 和 grid-row 已足够应对大多数精确定位需求。
- 省略结束部分时,默认为 span 1
- 支持负数线号,如 grid-column: -2 / -1; 表示倒数第二条到最末线
- 可与 z-index 配合处理层叠关系,当多个项目重叠时
- 避免过度跳跃布局,影响可访问性和屏幕阅读器体验
基本上就这些。掌握 grid-column 和 grid-row 的用法后,你就能自由地“画”出任何二维布局结构,而不受 DOM 顺序限制。不复杂但容易忽略的是线号的起始逻辑和 span 的灵活使用。多练习几次,很快就能得心应手。










