前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
首页程序员面试题库CSS Grid 网格线负索引用法
CSSGrid 布局

Grid 网格线的 -1 从哪一边开始数?

负索引从显式网格的结束边反向数,-1 是末端那条线,-2 是它前面一条。grid-column: 1 / -1 常用来横跨整个显式列网格;自动新增的隐式列不一定包含在这个跨度中。

前端进阶之旅 · 一题精讲更新于 2026.09.29
CSS#Grid 布局#CSS Grid
先看核心答案读代码示例
理解线索

从两端数同一组线

  1. 正编号从显式网格起点往前数
  2. 负编号从显式网格终点往回数
  3. 显式边界负索引参照的末端

书写方向变化会影响列的起点和终点,不能永远把 -1 想成物理右边。

核心回答

先记住这个答案

Grid 给显式网格的边界线编号。正数从起点线开始,负数从终点线往回数,-1 就是显式网格最后一条线。三列会有四条列线,1 / -1 从第一条到第四条,覆盖三列。负号数的是线,不是“倒数第一格”;后续创建的隐式列也不会简单把显式末端变成别的线。

  • -1 是显式网格末端线
  • 负数按网格线而非格子倒数
  • 1 / -1 跨显式列范围
  • 隐式轨道不改变显式末端线的含义

跨全宽标题最常用的写法

在三列卡片布局中,标题要占满整行,不需要知道模板未来会改成四列还是五列。起点写 1,终点写 -1,仍覆盖显式网格的全部列。项目若只需占最后一列,则可使用 -2 / -1。这样写比数具体末尾正编号更方便维护。

标题跨显式网格所有列CSS
.cards {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}
.cards > h2 { grid-column: 1 / -1; }
.cards > .last { grid-column: -2 / -1; }
/* h2 跨三列,last 放在显式末列 */

这里 -1 对应第四条列线,-2 对应第三条。格子的边界线数量总比轨道数量多一。改变列宽不会改变编号规则;改变显式列数后,-1 会自动指向新的显式末端。

隐式列与书写方向的边界

若某项目明确写 grid-column: 6 / 7,Grid 可能生成显式模板之外的隐式列。另一个项目仍写 1 / -1,它跨的是显式网格,而不是自动覆盖所有新增隐式列。想覆盖实际内容延伸的全部范围,应先修正模板或定位规则,不要误以为 -1 永远代表最远处的隐式边。

正负编号按网格的逻辑起止方向理解。横排从左到右的常见页面里,列起点在左、末端在右;换成 RTL 或不同书写模式,物理方位会变化。回答时说“显式网格末端线”比说“最右边”更准确。

有个容易混淆的情形:显式模板是三列,某张卡片用正线号放到第六列,页面看起来已有六列;此时标题写 grid-column: 1 / -1 仍只跨模板的三列。负线号锚在显式网格末端,不追着隐式列跑。调试时在浏览器 Grid 覆盖层里同时显示显式线和隐式轨道,再查看项目的起止线,比从截图推断 -1 对应物理最右边准确。

还有一种误会来自 repeat(auto-fill, ...):自动重复生成的列属于显式网格,视口变宽后重复次数增加,-1 指向的显式末端也会变化。这与项目定位到模板外创建隐式列不同。前者随模板计算扩展显式轨道,后者在显式边界外补轨道。判断 1 / -1 能跨到哪里,先看列是由模板生成还是由越界定位生成。

回答前,多想一步

容易答错的地方

把 -1 当最后一格
它是最后一条线。要放入最后一格,需用 -2 / -1 两条边界线。
认为新增隐式列会被 1 / -1 自动包含
负编号以显式网格边界为参照,显式模板外的轨道不能按这个写法自动覆盖。
试着用自己的话回答

面试官还会怎么问?

四列网格共有几条列线?

共有五条。-1 对应第五条,-2 对应第四条。

grid-row: 1 / -1 也成立吗?

成立,它按显式行网格的首尾线定位;若没有明确显式行,结果要结合当前网格定义判断。

RTL 布局里 -1 还在右边吗?

不一定。编号跟逻辑起止边走,列轴的物理方向可随书写方向变化。

从一道题,走向一组知识

把知识连起来

Grid 布局

Masonry 瀑布流和 subgrid 分别解决什么问题?

Masonry 的自动排布不能用负线号简单替代;负号只选择一条网格线。

Grid 布局

Grid 轨道的 min-content 和 max-content 有什么区别?

min-content 轨道也有网格线,线编号与轨道的实际宽度无关。

参考资料

  • CSS:Grid 布局参考资料

示例用于理解所注明的运行环境与边界;延伸学习可结合原文中的更多案例。

本题目录
  1. 先记住这个答案
  2. 跨全宽标题最常用的写法
  3. 隐式列与书写方向的边界
  4. 容易答错的地方
  5. 面试官还会怎么问
  6. 把知识连起来
读懂,再试着讲出来

先看核心答案,再读代码。最后展开追问,检查自己有没有遗漏边界。

试着回答追问
浏览全部面试题理解原理,也关注真实的使用场景。回到顶部 ↑