前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
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 grid-template-areas与命名网格线
CSSGrid 布局

命名区域和命名网格线有什么区别?

命名区域是用一组格子描述矩形位置,命名线是给行线或列线取别名。定义 main 区域后会自动出现 main-start 与 main-end 边界线;手写命名线则可以只标记某条边界,不必组成完整区域。

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

坐标名称的两种粒度

  1. 命名区域给完整矩形区域取名
  2. 命名线给单条行线或列线取名
  3. 隐式边界名区域自动提供 -start、-end 线

区域名字和线名字可能互相参与解析,重复使用名称时要检查实际选中的边界。

核心回答

先记住这个答案

grid-template-areas 给一块矩形网格区域命名,适合声明页面上的头部、侧栏和正文。命名网格线则是给一条行线或列线取别名,通常写在 grid-template-columns 或 grid-template-rows 的方括号中。两者相连:定义了 main 区域,也会自动得到 main-start 和 main-end 这些边界线名,可用于按线定位。

  • 区域指一块矩形,线指一条边界
  • 区域会生成对应的起止线名
  • 线名写在轨道模板的方括号里
  • 显式同名线会影响定位解析

区域用于描述版式

例如区域图第一行全是 header,第二行左边是 nav、右边是 main。这比逐个记列线号码更接近页面结构。响应式断点重新定义区域图后,项目仍可写 grid-area: main,无需改自身的定位规则。

区域图和手写线名可以共存CSS
.page {
  display: grid;
  grid-template-columns: [left] 12rem [content-start] 1fr [right];
  grid-template-areas: "header header" "nav main";
}
.page main { grid-area: main; }
.page .badge { grid-column: content-start / right; }

这里 main 是第二行右侧的矩形;content-start 与 right 是手写的列线别名。区域 main 还会让对应的边界线可通过名称引用。项目可以按完整区域放置,也可以只指定列边界,再让行位置自动安排。

线名适合精确控制边界

区域必须是矩形并占用一组格子。命名线没有这个要求;一条线可以同时有多个名称,如侧栏结束线也可以叫正文起点线。跨栏广告只需知道从 left 到 right,用线名会比增加专门的命名区域更直接。

需要警惕名称碰撞。区域自动产生的线名与显式写出的同名线会进入同一套定位解析;CSS 对显式线名有优先规则。若项目放错列,先检查轨道模板中是否已经写了相同的 main-start 或 main-end。

命名区域像给一块矩形取名,命名线则像给边界取名。页面骨架适合写 grid-template-areas,因为 header、nav、main 直接展示谁占哪块;一条横跨主栏与侧栏的装饰线更适合按起止线定位。区域 main 会产生 main-start、main-end 这类隐式线名,但只在对应轴的边界上有效。调试时先确认名字是区域名还是线名,再看项目是否同时指定了行、列。

回答前,多想一步

容易答错的地方

认为区域只是给项目加类名
区域是容器定义的坐标,与 HTML 类名无关。项目要通过 grid-area 才会引用它。
认为命名线必须成对出现
可以只命名一条边界线。另一边仍可用数字、span 或自动放置来确定。
试着用自己的话回答

面试官还会怎么问?

定义 main 区域后能写 grid-column: main-start / main-end 吗?

可以。命名区域会隐式产生对应的起止边界线,列轴也能引用这些名称。

同一条线能有两个名字吗?

能。在方括号里用空格列出两个名称,两个名称都指向同一条线。

区域图能写成 L 形吗?

不能。同名格子要组成单一矩形;L 形或分离的区域图无效。

从一道题,走向一组知识

把知识连起来

Grid 布局

Grid 固定列和 fr 列怎样计算可用宽度?

列轨道尺寸决定命名区域和命名线之间的实际距离。

Grid 布局

grid-template 简写包括哪些属性,能写 subgrid 吗?

grid-template 可同时写区域图与轨道尺寸,也可包含显式线名。

参考资料

  • CSS:Grid 布局参考资料

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

本题目录
  1. 先记住这个答案
  2. 区域用于描述版式
  3. 线名适合精确控制边界
  4. 容易答错的地方
  5. 面试官还会怎么问
  6. 把知识连起来
读懂,再试着讲出来

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

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