前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
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简写属性分解
CSSGrid 布局

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

grid-template 是显式网格简写,覆盖 grid-template-rows、grid-template-columns 和 grid-template-areas。子网格可在行或列轨道列表中使用 subgrid,但它不是一整套网格模板;实际继承的轨道范围取决于子网格项目跨过父网格的哪些轨道。

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

模板与子网格的层级

  1. grid-template组合显式行、列和区域
  2. subgrid让某一轴沿用父网格轨道
  3. 父级跨度决定子网格可用的轨道数量

若要保留 grid-template-areas,写轨道尺寸的简写时要确认是否把区域属性重置为 none。

核心回答

先记住这个答案

grid-template 只合并三个显式网格属性:行轨模板、列轨模板和命名区域。subgrid 则是子网格在某一轴上沿用父网格轨道的值,通常写在 grid-template-columns 或 grid-template-rows 中;在符合语法的简写轨道位置也可以出现。它并不意味着整个模板自动继承,另一轴仍可独立定义。

  • grid-template 只覆盖三个显式模板属性
  • subgrid 用在行轴或列轴轨道列表
  • 子网格仅继承自己跨过的父轨道
  • grid 还会重置隐式网格属性

简写的三项内容

做两行两列页面时,grid-template: 80px 1fr / 200px 1fr 的斜线前是行轨,后面是列轨。它会把命名区域设置为 none。如果使用带引号的区域图语法,则每行字符串后可以跟该行尺寸,斜线后再写列尺寸。这种语法适合版式图较小的页面;复杂项目用三个长属性往往更好读。

给嵌套卡片的列使用子网格CSS
.parent {
  display: grid;
  grid-template-columns: 120px 1fr 120px;
}
.card {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: subgrid;
  grid-template-rows: auto auto;
}
/* card 的三列与父级所跨的三列对齐 */

这里 .card 是父网格的一个项目,同时也是子网格容器。它横跨父网格三列,所以其子元素可沿三条父轨道对齐;两行仍由它自己定义。若 .card 只跨后两列,子网格只拿到那两列,不会复制父网格的全部三列。

与 grid 简写的边界

grid-template 不负责隐式行高、隐式列宽和自动放置流向。grid 简写则还覆盖这些属性,未写出时也会把它们重置为初始值。修改页面模板时,若此前设置了 grid-auto-rows,用 grid-template 更容易保留该设定。

还要区分值与属性:subgrid 是轨道列表的值,不是写在 grid-template-areas 中的区域名字。区域图要求矩形名称分布;子网格要求对应的元素本身已经是父网格项目,才能谈继承父级轨道。

最容易误用的是在已有 grid-template-areas 的容器上,后写一条只指定行列的 grid-template。简写会同时给区域模板赋初始值,先前的区域图可能失效;只想改列时写 grid-template-columns 更稳。子网格同理:subgrid 放在某一轴的轨道值里,另一轴是否继承需要单独写,不能从一个关键词推断整个嵌套网格都会同步。

回答前,多想一步

容易答错的地方

认为设置 subgrid 会继承父网格所有轴
行与列要分别决定。只写 grid-template-columns: subgrid,行轨仍由子网格自己计算或定义。
认为 grid-template 会重置自动行高
它只覆盖显式模板三项,自动行高是 grid-auto-rows,不在此简写内。
试着用自己的话回答

面试官还会怎么问?

子网格能超出父项目跨过的列吗?

子网格沿用的是父项目覆盖的那段轨道;需要更多列,应先调整父项目的跨度。

grid-template: none 会怎样?

三个显式模板属性都归为 none,之后轨道可由内容和隐式网格规则创建。

什么时候用 grid-template,什么时候用长属性?

模板行列和区域需要一起呈现时简写直观;只改一个轴时长属性更清楚,也避免意外清掉区域图。

从一道题,走向一组知识

把知识连起来

Grid 布局

用 Grid 的命名区域怎样写圣杯布局?

圣杯布局常用区域模板,改成简写时须保留每个区域的位置。

Grid 布局

grid-auto-flow: column 时,隐式列怎样生成?

隐式列由自动放置产生,不属于 grid-template 的覆盖范围。

参考资料

  • CSS:Grid 布局参考资料

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

本题目录
  1. 先记住这个答案
  2. 简写的三项内容
  3. 与 grid 简写的边界
  4. 容易答错的地方
  5. 面试官还会怎么问
  6. 把知识连起来
读懂,再试着讲出来

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

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