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

如何让Flex容器随子元素收缩适配

解决Flex容器子元素折叠后不收缩的问题

问题根源:
子元素设置flex: 0折叠时,其默认的min-width: auto会保留内容的最小宽度,导致Flex容器无法完全收缩到剩余子元素的尺寸,红色背景因此残留。

修改方案:
给.collapsed类添加width: 0和min-width: 0,强制折叠元素完全收缩,让容器能自适应剩余子元素的宽度。

修改后的CSS代码

body {
  font-size: 25px;
}

.flex-container {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background-color: red;
}

.flex-collapsible {
  overflow: hidden;
  flex: 1;
  transition: flex 0.5s cubic-bezier(0.2, 0.4, 0.4, 1.0);

  &.collapsed {
    flex: 0;
    width: 0;
    min-width: 0;
  }
}

#item1 {
  background-color: yellow;
}

#item2 {
  background-color: orange;
}

完整可运行代码

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<div class="flex-container">
  <div id="item1">fixed</div>
  <div class="flex-collapsible" id="item2">collapsible</div>
</div>

<style>
body {
  font-size: 25px;
}

.flex-container {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background-color: red;
}

.flex-collapsible {
  overflow: hidden;
  flex: 1;
  transition: flex 0.5s cubic-bezier(0.2, 0.4, 0.4, 1.0);
}

.flex-collapsible.collapsed {
  flex: 0;
  width: 0;
  min-width: 0;
}

#item1 {
  background-color: yellow;
}

#item2 {
  background-color: orange;
}
</style>

<script>
let isExpanded = false
$(".flex-container").on("click", function () {
  if (isExpanded === false) {
    isExpanded = true
    $("#item2").addClass("collapsed")
  } else {
    isExpanded = false
    $("#item2").removeClass("collapsed")
  }
})
</script>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 21:03:28