如何在CSS中使用Grid实现主次内容区域布局

来源:程序开发作者:森沢头衔:网络博主
导读:本期聚焦于小伙伴创作的《如何在CSS中使用Grid实现主次内容区域布局》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何在CSS中使用Grid实现主次内容区域布局》有用,将其分享出去将是对创作者最好的鼓励。

在网页开发场景中,主次内容区域布局是绝大多数页面的基础结构,比如左侧导航加右侧内容、顶部头部加中间主体加底部页脚的组合都属于这类布局。CSS Grid布局中的grid-template-areas属性可以让开发者通过语义化的区域命名来定义布局,不需要复杂的计算就能快速搭建出清晰的结构。

如何在CSS中使用Grid实现主次内容区域布局

grid-template-areas基础概念

grid-template-areas是CSS Grid布局中用于定义网格区域名称的属性,它的值是由字符串组成的列表,每个字符串代表网格的一行,字符串中的名称对应网格中的区域。使用这个属性前需要先通过display: grid将容器设置为网格容器,同时可以通过grid-template-columnsgrid-template-rows定义网格的列宽和行高。

命名区域时需要注意,相同名称的单元格会被合并为一个区域,用点号.可以表示空的网格单元格。比如下面的代码就定义了一个两行两列的网格,其中第一行第一列的名称为header,第一行第二列的名称为aside,第二行的两个单元格名称都是main:

.container {
  display: grid;
  /* 定义两列,第一列200px,第二列占剩余空间 */
  grid-template-columns: 200px 1fr;
  /* 定义两行,第一行60px,第二行占剩余空间 */
  grid-template-rows: 60px 1fr;
  /* 定义区域布局 */
  grid-template-areas:
    "header header"
    "aside main";
  height: 100vh;
}

实现基础主次内容布局

下面我们通过一个实际案例来实现常见的页面主次布局:顶部是通栏头部,左侧是次要的侧边栏,右侧是主要的内容区域,底部是通栏页脚。首先编写HTML结构:

<div class="page-container">
  <header class="page-header">网站头部</header>
  <aside class="page-sidebar">侧边栏导航</aside>
  <main class="page-main">主要内容区域</main>
  <footer class="page-footer">网站页脚</footer>
</div>

接下来使用grid-template-areas定义布局,给每个子元素通过grid-area属性指定对应的区域名称,和grid-template-areas中定义的名称对应即可:

.page-container {
  display: grid;
  /* 四列:侧边栏200px,主内容占剩余空间,这里列定义需要和区域对应,实际区域是3行2列 */
  grid-template-columns: 200px 1fr;
  grid-template-rows: 60px 1fr 40px;
  /* 定义三行两列的区域:第一行两个单元格都是header,第二行第一个是sidebar第二个是main,第三行两个都是footer */
  grid-template-areas:
    "header header"
    "sidebar main"
    "footer footer";
  height: 100vh;
  gap: 10px;
  padding: 10px;
  box-sizing: border-box;
}

/* 给每个区域指定对应的grid-area名称 */
.page-header {
  grid-area: header;
  background-color: #f0f0f0;
  display: flex;
  align-items: center;
  padding: 0 20px;
}

.page-sidebar {
  grid-area: sidebar;
  background-color: #e8e8e8;
  padding: 20px;
}

.page-main {
  grid-area: main;
  background-color: #ffffff;
  padding: 20px;
  border: 1px solid #ddd;
}

.page-footer {
  grid-area: footer;
  background-color: #f0f0f0;
  display: flex;
  align-items: center;
  justify-content: center;
}

上面的代码就实现了一个完整的主次内容布局,侧边栏作为次要内容区域宽度固定,主内容区域自适应剩余空间,头部和页脚通栏显示,整体结构清晰,代码量很少。

适配响应式场景

在移动端场景下,通常需要将侧边栏移到主内容下方,或者隐藏侧边栏,这时候只需要通过媒体查询修改grid-template-areas的定义即可,不需要调整HTML结构:

/* 移动端适配,屏幕宽度小于768px时修改布局 */
@media (max-width: 768px) {
  .page-container {
    /* 改为单列布局 */
    grid-template-columns: 1fr;
    /* 四行:头部、主内容、侧边栏、页脚 */
    grid-template-rows: 60px 1fr auto 40px;
    grid-template-areas:
      "header"
      "main"
      "sidebar"
      "footer";
  }
}

这样在移动端就会变成垂直排列的结构,主内容区域在上方,侧边栏在下方,符合移动端的阅读习惯。

注意事项

  • grid-template-areas中每一行的字符串长度必须一致,也就是每一行的区域数量要相同,否则布局会失效。
  • 区域名称不能是CSS的保留字,比如noneauto等,建议使用语义化的名称方便维护。
  • 如果某个区域不需要显示,可以用点号.代替名称,对应的单元格会保持为空。
  • grid-template-areas需要和grid-template-columnsgrid-template-rows配合使用,否则网格的列宽和行高会采用默认值,可能无法达到预期的布局效果。

总结

使用CSS Grid的grid-template-areas属性实现主次内容区域布局,相比传统布局方式代码更简洁,结构更直观,修改布局时只需要调整区域定义的字符串即可,维护成本很低。同时结合媒体查询可以轻松实现响应式适配,非常适合现代网页开发使用。开发者可以在实际项目中多尝试这种布局方式,提升开发效率。

CSS_Gridgrid-template-areas主次内容布局响应式布局修改时间:2026-07-03 17:33:26

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。