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

CSS Grid列堆叠问题:列间过大间隙如何解决?

CSS Grid 列布局间隙问题

我是CSS Grid新手,桌面端布局里第2列和第4列之间存在大间隙,需要让它们紧密排列。要求:

  • 即使各列文本高度不同,所有列也要整齐对齐、无间隙
  • 移动端所有列正常堆叠

问题截图:
问题截图

当前代码:

CSS 代码

.one { background: red;} 
.two { background: pink;} 
.three { background: green;} 
.four { background: yellow;} 
.wrapper section { height: fit-content;} 

@media (max-width: 768px) { 
  .wrapper section:nth-child(2) { margin: 32px 0 40px;} 
  .wrapper section:nth-child(4) { margin: 24px 0 40px;}
} 

@media (min-width: 768px) { 
  .wrapper { display: grid; gap: 1rem 4rem; grid-template-columns: repeat(2, 1fr);} 
  .wrapper section { grid-column: 1/2;} 
  .wrapper section.sp { grid-column: 2/3; grid-row: 1 / span 3;} 
  .wrapper section.sa { grid-column: 2/2; grid-row: 3 / span 1;}
} 

@media (min-width: 1280px) { 
  .wrapper { padding: 32px 24px 24px;}
}

HTML 代码

<div class="wrapper"> 
  <section class="one"> 
    <p> MOBILE ORDER 1 </p> 
    <P> DESKTOP COL 1 TOP LEFT </P> 
    <p> bla bla<br />bla bla<br />bla bla<br />bla bla<br /> </p> 
    <p> bla bla<br />bla bla<br />bla bla<br />bla bla<br /> </p> 
  </section> 
  <section class="two sp"> 
    <p> MOBILE ORDER 2 </p> 
    <P> DESKTOP COL 2 TOP RIGHT </P> 
    <p> bla bla<br />bla bla<br />bla bla<br />bla bla<br /> </p> 
    <p> bla bla<br />bla bla<br />bla bla<br />bla bla<br /> </p> 
    <p> bla bla<br />bla bla<br />bla bla<br />bla bla<br /> </p> 
    <p> bla bla<br />bla bla<br />bla bla<br />bla bla<br /> </p> 
  </section> 
  <section class="three"> 
    <p> MOBILE ORDER 3 </p> 
    <P> DESKTOP COL 1 BOTTOM LEFT </P> 
    <p> bla bla<br />bla bla<br />bla bla<br />bla bla<br /> </p> 
    <p> bla bla<br />bla bla<br />bla bla<br />bla bla<br /> </p> 
    <p> bla bla<br />bla bla<br />bla bla<br />bla bla<br /> </p> 
    <p> bla bla<br />bla bla<br />bla bla<br />bla bla<br /> </p> 
  </section> 
  <section class="four sa"> 
    <p> MOBILE ORDER 4 </p> 
    <P> DESKTOP COL 2 BOTTOM RIGHT </P> 
    <p> bla bla<br />bla bla<br />bla bla<br />bla bla<br /> </p> 
    <p> bla bla<br />bla bla<br />bla bla<br />bla bla<br /> </p> 
  </section> 
</div>

解决方案

问题根源是给.sp元素设置了grid-row: 1 / span 3,强制它占据3行高度,导致.sa只能从第3行开始,产生多余间隙。调整Grid行分配逻辑即可修复:

修改桌面端CSS规则:

@media (min-width: 768px) { 
  .wrapper { 
    display: grid; 
    gap: 1rem 4rem; 
    grid-template-columns: repeat(2, 1fr);
    grid-auto-rows: min-content;
  } 
  .wrapper .one, .wrapper .three { grid-column: 1; }
  .wrapper .two, .wrapper .four { grid-column: 2; }
}

修改后效果:

  • 第二列的两个元素会紧密堆叠,无额外间隙
  • 第一列元素高度不同时,Grid自动调整行高,保持列对齐
  • 移动端布局不受影响,依然正常堆叠

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 18:32:29