You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让12列Grid布局的左、中、右区块各占4列?

解决12列Grid布局中三区块无法同行各占4列的问题

你的问题核心有两个:

  • 左侧、中间、右侧区块的父元素<main>没有设置为Grid容器,导致它们无法继承外层.container的Grid布局规则,自然无法在同一行排列。
  • 列范围设置错误,当前的列起止没有实现每个区块占4列的目标,同时还有其他小的Grid属性错误。

修复步骤:

1. 将<main>设置为Grid容器

给main添加Grid布局属性,让它内部的子元素可以使用12列网格:

main {
  grid-column: 1 / 13; /* 简化写法,等价于原start/end设置 */
  background: grey;
  display: grid; /* 关键:让main成为Grid容器 */
  grid-template-columns: repeat(12, 1fr); /* 和外层保持一致的12列结构 */
  grid-gap: inherit; /* 继承外层的间距,保持布局统一 */
}

2. 修正span-12的列跨度

之前的span 13超出了12列的范围,改为正确的12列跨度:

.span-12 {
  grid-column: span 12; /* 或者写1 / 13 */
  background: red;
  padding: 30px;
}

(无需手动指定grid-row,Grid会自动按顺序排列元素)

3. 调整三个区块的列范围,实现各占4列

12列网格中,每个区块占4列的正确列起止应该是:

  • 左侧:第1列到第5列(共4列)
  • 中间:第5列到第9列(共4列)
  • 右侧:第9列到第13列(共4列)

修改后的CSS:

.left {
  grid-column: 1 / 5;
  background: green;
  padding: 30px;
}

.middle {
  grid-column: 5 / 9;
  background: yellow;
  padding: 30px;
}

.right {
  grid-column: 9 / 13;
  background: orange;
  padding: 30px;
}

(无需手动指定grid-row,Grid会自动将它们放在同一行)

4. 修正footer的行位置

之前的grid-row: 9 / 10是错误的,改为指定正确的行号:

footer {
  grid-column: span 12;
  grid-row: 5 / 6; /* 前面元素到第4行,footer自动排在第5行 */
  background: #3bbced; /* 可选:添加背景色方便查看布局 */
  padding: 30px;
}

完整修改后的代码:

CSS部分

.container {
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  grid-auto-rows: minmax(100px, auto);
  grid-gap: 10px;
  position: relative;
}

header {
  grid-column: 1 / 13;
  background: #3bbced;
  padding: 30px;
}

nav {
  grid-column: 1 / 13;
  background: #3bbced;
  padding: 30px;
}

main {
  grid-column: 1 / 13;
  background: grey;
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  grid-gap: inherit;
}

.span-12 {
  grid-column: span 12;
  background: red;
  padding: 30px;
}

.left {
  grid-column: 1 / 5;
  background: green;
  padding: 30px;
}

.middle {
  grid-column: 5 / 9;
  background: yellow;
  padding: 30px;
}

.right {
  grid-column: 9 / 13;
  background: orange;
  padding: 30px;
}

footer {
  grid-column: span 12;
  grid-row: 5 / 6;
  background: #3bbced;
  padding: 30px;
}

HTML部分

(HTML无需修改,保持原有结构即可)

<div class="container">
  <header class="logo">Header</header>
  <nav>
    <ul>
      <a href="#">Home</a>
      <a href="/">Menu</a>
      <a href="/">Book</a>
      <a href="/">About</a>
    </ul>
  </nav>
  <main>
    <article class="span-12">Ipsum</article>
    <section class="left">Ipsum</section>
    <section class="middle">Ipsum</section>
    <section class="right">Ipsum</section>
  </main>
  <footer>
    <div class="footer-col-left">small logo</div>
    <div class="footer-col-right">copywrite</div>
  </footer>
</div>

内容的提问来源于stack exchange,提问作者SouthW

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 14:50:21