给某个网格项写了 grid-row: 1 / 3,页面没有任何变化,控制台也不报错。这类静默失效几乎只有一个根因:声明引用的网格线根本不存在。

线号从哪来
三列的网格只有四条列线,编号一到四。写 grid-column: 1 / 5 时,第五条线不存在,声明被丢弃。行方向同理,两行三线的结构里引用第四条行线同样无效。
绝对定位与相对跨度
grid-row: 1 / 3 是绝对线号定位,要求线号真实存在。grid-row: span 2 是相对跨度,从当前位置向后占两格,线不够时浏览器自动生成隐式轨道。两套机制混着理解,是大多数困惑的来源。
隐式网格的补偿
显式声明之外的区域叫隐式网格。项目被放到显式范围之外时,浏览器自动补轨道,尺寸由 grid-auto-rows 与 grid-auto-columns 控制,默认按内容撑开。跨距声明指向隐式区域时能生效,但轨道尺寸往往与预期不同。
排查三步
- 开发者工具打开网格覆盖层,数清实际的线号。
- 确认声明里的线号在覆盖层上找得到。
- 需要弹性跨距时改用 span 写法,不依赖具体线号。
养成先画网格再写跨距的习惯,失效问题基本绝迹。
