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

CSS实现从两列到三列的响应式布局问题求助

响应式布局实现问题:从两列扩展为三列,仅两个容器高度可增长

我想要实现一种特殊的响应式布局,从小屏幕的两列自动扩展到大屏幕的三列,其中只有两个容器的高度可以自适应增长。我已经画出了预期效果的示意图,也完成了两列布局的实现,但不知道怎么用CSS Flexbox扩展到三列。

我选择Flexbox是因为它最接近我的需求,但解决方案不限于Flexbox。

场景说明

  • 总共5个容器
  • 3个容器为固定高度,2个容器高度可自适应增长
  • 小屏幕下为两列布局,大屏幕下为三列布局
  • 两列布局时容器宽度为父元素的50%,三列布局时为父元素的33%

现有代码示例

JavaScript

let wf = 0.5;
let wm = 500;

function simulateWidthUpdate() {
  const g = document.getElementById('grid')
  wf = wf == 1 ? 0.5 : 1;
  g.style.width = parseInt(wf * wm) + 'px';
}

CSS

button {
 margin: 10px 0;
}

#grid {
  border: 1px solid red;
  width: 250px;
  height: 400px;
  display: flex;
  flex-direction: column;
  flex-wrap: wrap;
  gap: 10px;
}

.item {
  border-radius: 10px;
  background: #233C3C;
  color: #fff;
  padding: 10px;
  text-align: center;
  flex-grow: 0;
  max-width: 100px;
  width: 100%;
}

#item-c,
#item-d {
  flex-grow: 1;
  min-height: 200px;
}

#item-a {
   height: 20px;
}


#item-b {
   height: 40px;
}

#item-e {
   height: 50px;
}

HTML

<button onclick="simulateWidthUpdate()">Alternate Width</button>
<div id="grid">
  <div class="item" id="item-a">A</div>
  <div class="item" id="item-c">B</div>
  <div class="item" id="item-e">C</div>
  <div class="item" id="item-b">D</div>
  <div class="item" id="item-d">E</div>
</div>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 08:05:19