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

Flex三列布局优化:如何利用最后一列右侧的留白空间?

解决Flex三列布局最后一列右侧留白回收问题

你的问题根源在于给每个列固定了33.33%的宽度,再加上justify-content:space-evenly的设置,导致无论内容多少,列都会占据固定宽度,内容较短的列右侧自然出现留白。以下是两种Flex实现的解决方案:

方案一:自适应平分空间(推荐)

移除固定宽度,通过flex属性让列自动填充容器空间,同时设置最小宽度避免布局坍塌:

#side {
  width: 100%;
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  /* 移除justify-content:space-evenly,flex:1会自动分配空间 */
}
#side > div {
  text-align: justify;
  padding: 1.5rem;
  flex: 1; /* 列会根据剩余空间自动扩展/收缩,实现平分效果 */
  min-width: 30%; /* 保证列的最小宽度,防止内容过窄时挤成单列 */
}

设置后,所有列内容充足时会均匀平分容器宽度;最后一列内容较少时,它会根据内容调整宽度,剩余空间由前两列平分,彻底消除右侧留白。

方案二:单独控制最后一列宽度

如果希望前两列保持近似三分之一宽度,最后一列仅适配内容宽度,可给最后一列添加类名单独设置:

修改后的HTML:

<div id="side">
  <div>long content</div>
  <div>long content</div>
  <div class="short-col">short</div>
</div>

修改后的CSS:

#side {
  width: 100%;
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
}
#side > div {
  text-align: justify;
  padding: 1.5rem;
  flex: 1;
  min-width: 30%;
}
#side > .short-col {
  flex: 0 1 auto; /* 禁止列扩展,仅根据内容确定宽度 */
}

这种方式下,前两列平分容器剩余空间,最后一列只占据内容所需宽度,右侧不会有多余留白。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 16:11:14