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

如何使用display:grid垂直对齐网格项并填充所有垂直空白空间?

我使用display:grid而非flex布局来展示部分div元素。

当前页面效果如下:
当前页面效果

期望实现的页面效果如下:
期望实现的页面效果

对应代码如下:

.container {
  display: grid;
  grid-template-columns: 1.5fr 2fr 1fr;
  grid-template-rows: 1fr 1fr 1fr;
  grid-auto-columns: 1fr;
  grid-auto-rows: 1fr;
  gap: 40px 40px;
  grid-auto-flow: row dense;
  justify-items: stretch;
  align-items: stretch;
  grid-template-areas: "left1 center-div right1" "left1 center-div right2" "left2 center-div right3";
  width: 100%;
  height: 100%;
}

.left1 {
  grid-area: left1;
}

.left2 {
  grid-area: left2;
}

.center-div {
  grid-area: center-div;
}

.right1 {
  grid-area: right1;
}

.right2 {
  grid-area: right2;
}

.right3 {
  grid-area: right3;
}
<div class="container owl-carousel owl-theme">

  <div class="grid-item left1">
    left image 1
  </div>

  <div class="grid-item left2">
    left image 2
  </div>

  <div class="grid-item center-div">
    center image
  </div>

  <div class="grid-item right1">
    right image 1
  </div>

  <div class="grid-item right2">
    right image 2
  </div>

  <div class="grid-item right3">
    right image 3
  </div>

</div>

解决方案

你代码里的gap: 40px 40px就是控制网格元素间距的属性,第一个值对应行间距,第二个对应列间距,直接调小这两个数值就能缩小间距,比如改成gap: 8px 12px就可以得到更紧凑的布局,你可以根据实际渲染效果调整到你想要的大小即可。

另外你的容器上添加了owl-carousel类,这个轮播插件默认会给子元素加额外边距,如果调整gap后间距还是不符合预期,可以补充下面的样式覆盖插件的默认边距:

.container .grid-item {
  margin: 0 !important;
  padding: 0;
}
/* 如果子项内放置的是图片,可以加下面的样式保证图片填满容器 */
.grid-item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:27:01