CSS Grid子元素放置方法_grid-column grid-row实践

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

在使用 CSS Grid 布局时,精确控制子元素的位置是关键。通过 grid-columngrid-row 属性,可以灵活地将网格项放置在指定的行和列上,而不依赖于它们在 HTML 中的顺序。这种方式让布局更加直观且易于维护。

理解 grid-column 与 grid-row

grid-columngrid-row 是简写属性,用于定义网格项在网格中的起始和结束位置。

基本语法:

  • grid-column: / ;
  • grid-row: / ;

也可以只设置起始线,浏览器会自动占据一个轨道。

通过线号定位元素

网格容器中的每条垂直线和水平线都有编号,从 1 开始。你可以根据这些线号来放置元素。

示例:

.container {
  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-columngrid-row 已足够应对大多数精确定位需求。

  • 省略结束部分时,默认为 span 1
  • 支持负数线号,如 grid-column: -2 / -1; 表示倒数第二条到最末线
  • 可与 z-index 配合处理层叠关系,当多个项目重叠时
  • 避免过度跳跃布局,影响可访问性和屏幕阅读器体验

基本上就这些。掌握 grid-column 和 grid-row 的用法后,你就能自由地“画”出任何二维布局结构,而不受 DOM 顺序限制。不复杂但容易忽略的是线号的起始逻辑和 span 的灵活使用。多练习几次,很快就能得心应手。