Frontend Academy · 课时

CSS Grid:模板区域、auto-fit 与 minmax

为网格区域命名以创建易读的布局,使用 auto-fit 与 minmax() 实现响应式列,并控制隐式轨道。

第 2 / 4 课13 个步骤

CSS Grid:模板区域、auto-fit 与 minmax 是 CoddyKit 上的免费 Frontend Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Frontend Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Frontend Academy 课程共包含 4 节课。

命名模板区域——可视化布局

grid-template-areas 让您可以用直观的 ASCII 图示格式为区域命名。每个字符串是一行;每个单词是一个单元格。点号(.)表示空单元格。使用 grid-area: name 为元素分配区域。

.layout {
  display: grid;
  grid-template-areas:
    'header header'
    'sidebar main'
    'footer  footer';
  grid-template-columns: 240px 1fr;
  grid-template-rows: 60px 1fr 48px;
  min-height: 100vh;
}
header  { grid-area: header;  }
.sidebar { grid-area: sidebar; }
main    { grid-area: main;    }
footer  { grid-area: footer;  }

使用媒体查询设置响应式模板区域

在断点处改变模板区域布局,使移动端的侧边栏从单独一列移到主内容下方。

.layout {
  grid-template-areas:
    'header'
    'main'
    'sidebar'
    'footer';
  grid-template-columns: 1fr;
}
@media (min-width: 768px) {
  .layout {
    grid-template-areas:
      'header  header'
      'sidebar main'
      'footer  footer';
    grid-template-columns: 220px 1fr;
  }
}

自动适配与自动填充的区别

auto-fit:折叠空轨道,使项目拉伸并填满整行。auto-fill:即使轨道为空,也保留网格结构。对于响应式卡片网格,auto-fit 几乎总是您想要的选择。

.cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 16px;
}

最小值—最大值函数深入讲解

minmax(min, max) 定义一个至少为 min、最多为 max 的轨道。常见组合包括:minmax(0, 1fr)(完全灵活)、minmax(200px, 1fr)(带最小值的响应式布局)、minmax(auto, auto)(根据内容调整大小)。

跨越列与行

使用 grid-column: span 2 让项目跨越两列。结合 grid-row: span 2,可以创建一个在网格中占据 2×2 区块的特色项目。

.featured {
  grid-column: span 2;
  grid-row: span 2;
}

/* Or explicit placement: */
.featured {
  grid-column: 1 / 3;  /* from line 1 to line 3 */
  grid-row: 1 / 3;
}

密集自动放置

grid-auto-flow: dense 会使用较小的项目填补空隙。它适用于项目大小不一的类砌体布局。

.mosaic {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-auto-flow: dense;
  gap: 8px;
}

分数单位与百分比

分数单位始终指扣除固定大小的轨道和间距后剩余的可用空间。将分数单位与固定大小混用,可以获得最大的灵活性:侧边栏固定,主内容区域灵活。

隐式网格列与行

这些属性控制隐式创建的轨道大小(当项目被放置在显式网格之外时会创建这些轨道)。grid-auto-rows: minmax(100px, auto) 会为隐式行设置最小高度。

.photo-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-auto-rows: minmax(200px, auto);
  gap: 8px;
}

在 DevTools 中检查网格

当您点击元素面板中网格容器旁的“网格”标记时,DevTools 会在页面上叠加网格线和区域名称。请使用它调试意外的轨道大小和项目放置问题。

CSS 子网格

grid-template-columns: subgrid 让嵌套网格可以与父网格的轨道对齐。自 2023 年起,所有现代浏览器都支持此功能——它对于在卡片网格中对齐各张卡片的内部内容至关重要。

.card-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
}
.card {
  display: grid;
  grid-row: span 3;
  grid-template-rows: subgrid; /* aligns to parent rows */
}

网格布局何时优于弹性盒布局

当您需要明确的二维控制、同时关注行和列时,网格布局更合适。如果您只是想让项目排列成一行或一列,弹性盒布局会更简单。

快速检查

哪个 CSS 网格值会创建尽可能多的列,每列最小宽度为 200 像素,并让各列平分剩余空间?

回顾:高级 CSS 网格布局

grid-template-areas 会创建易读的命名布局。自动适配结合最小—最大函数,可以在不使用媒体查询的情况下创建响应式网格。让项目跨越多列和多行。密集自动放置可以填补空隙。使用 DevTools 网格叠加层进行调试。子网格可以让嵌套项目与父网格轨道对齐。

免费开始

用 AI 导师学习 HTML — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
41
课程
163

常见问题解答

「CSS Grid:模板区域、auto-fit 与 minmax」课时是免费的吗?

是的 — 「CSS Grid:模板区域、auto-fit 与 minmax」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Frontend Academy 课程的其余内容,请升级到 CoddyKit PRO。 Frontend Academy 课程共包含 4 节课。

「CSS Grid:模板区域、auto-fit 与 minmax」这节课中我会学到什么?

为网格区域命名以创建易读的布局,使用 auto-fit 与 minmax() 实现响应式列,并控制隐式轨道。 你通过在浏览器中直接运行的动手代码来练习 Frontend Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Frontend Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Frontend Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「CSS Grid:模板区域、auto-fit 与 minmax」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Frontend Academy 课中编写并运行代码吗?

能。每节 Frontend Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. Flexbox 深入:对齐、换行与顺序
  2. CSS Grid:模板区域、auto-fit 与 minmax
  3. 组合使用 Flexbox 与 Grid
  4. 用于主题设置的 CSS 变量
← 返回 Frontend Academy