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

如何用CSS Grid实现元素垂直排列的三列可变高度列表

解决方案:实现高度独立的三列垂直Grid列表

你当前的问题出在Grid的全局行轨道机制:所有列的元素共享同一组行轨道,导致每行的高度由该行最高的元素撑开,所以第一、三列的元素会被第二列的高元素“带高”,出现不必要的空隙。

要实现列内元素高度独立、垂直排列的效果,推荐两种方案:


方案1:嵌套Grid(推荐,灵活易维护)

修改HTML结构,把每列的元素放在单独的列容器里,让外层Grid负责列的横向排列,内层Grid负责列内元素的垂直堆叠,这样每列的行轨道完全独立,互不影响。

代码示例

.wrapper {
  margin: 0;
  padding: 0;
  list-style-type: none;
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 10px; /* 控制列之间的间距 */
}

.column {
  display: grid;
  gap: 10px; /* 控制列内元素的间距 */
}

.first-column .item {
  height: 200px;
  background-color: skyblue;
}

.second-column .item {
  height: 500px;
  background-color: aquamarine;
}

.third-column .item {
  height: 300px;
  background-color: silver;
}
<ul class="wrapper">
  <li class="column first-column">
    <div class="item"></div>
    <div class="item"></div>
  </li>
  <li class="column second-column">
    <div class="item"></div>
    <div class="item"></div>
  </li>
  <li class="column third-column">
    <div class="item"></div>
    <div class="item"></div>
  </li>
</ul>

方案2:不修改HTML结构(仅适用于固定数量元素)

如果不能改动原有HTML结构,可以通过手动指定每个元素的grid-column和grid-row,让不同列的元素占据完全独立的行轨道,避免行高互相影响。缺点是元素数量变化时需要手动调整代码,灵活性差。

代码示例

.wrapper {
  margin: 0;
  padding: 0;
  list-style-type: none;
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  grid-template-rows: repeat(6, auto); /* 为6个元素创建6个独立行 */
  gap: 10px;
}

/* 第一列元素:占据第1、2行 */
.first-column:nth-child(1) {
  grid-column: 1;
  grid-row: 1;
}
.first-column:nth-child(2) {
  grid-column: 1;
  grid-row: 2;
}

/* 第二列元素:占据第3、4行 */
.second-column:nth-child(3) {
  grid-column: 2;
  grid-row: 3;
}
.second-column:nth-child(4) {
  grid-column: 2;
  grid-row: 4;
}

/* 第三列元素:占据第5、6行 */
.third-column:nth-child(5) {
  grid-column: 3;
  grid-row: 5;
}
.third-column:nth-child(6) {
  grid-column: 3;
  grid-row: 6;
}

.first-column {
  height: 200px;
  background-color: skyblue;
}

.second-column {
  height: 500px;
  background-color: aquamarine;
}

.third-column {
  height: 300px;
  background-color: silver;
}
<ul class="wrapper">
  <li class="first-column"></li>
  <li class="first-column"></li>
  <li class="second-column"></li>
  <li class="second-column"></li>
  <li class="third-column"></li>
  <li class="third-column"></li>
</ul>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 04:40:19