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

IE11中height:auto的垂直Flex布局溢出滚动失效问题

实现固定头部、内容区域滚动的垂直弹窗布局

嘿,我来帮你搞定这个问题!你的思路已经找对方向了——利用Flex布局来实现头部固定、内容区域自动填充剩余空间并滚动的效果。咱们把代码补全并梳理清楚:

核心CSS要点

  • 给弹窗容器.popup设置display: flex和flex-direction: column,让内部元素垂直排列
  • 头部.header用flex: 0 0 auto,确保它不会被压缩或拉伸,保持自身的高度
  • 内容区域.body设置flex: 1 1 auto,用来占据弹窗剩下的所有空间,再加上overflow: auto,当内容超出容器剩余高度时就会自动出现滚动条

完整可运行代码

<style>
.wrapper { 
  position: fixed; 
} 
.popup { 
  position: fixed; 
  width: 200px; 
  max-height: 300px; 
  display: flex; 
  flex-direction: column; 
  border: 1px solid black;
  /* 加上margin避免两个弹窗重叠 */
  margin-right: 10px;
} 
.a { 
  left: 0; 
} 
.b { 
  left: 220px; 
} 
.header { 
  flex: 0 0 auto; 
  border: 2px solid green; 
  padding: 8px;
} 
.body { 
  flex: 1 1 auto; 
  overflow: auto; 
  padding: 8px;
}
</style>

<div class="wrapper">
  <div class="popup a">
    <div class="header">弹窗A头部</div>
    <div class="body">
      这是弹窗A的内容<br>
      内容不多,不会滚动<br>
      简单测试文本
    </div>
  </div>
  
  <div class="popup b">
    <div class="header">弹窗B头部</div>
    <div class="body">
      这是弹窗B的长内容<br>
      测试滚动效果<br>
      行内容<br>
      行内容<br>
      行内容<br>
      行内容<br>
      行内容<br>
      行内容<br>
      行内容<br>
      行内容<br>
      行内容<br>
      行内容<br>
      行内容<br>
      行内容<br>
      行内容<br>
      行内容<br>
      行内容<br>
      行内容<br>
      底部内容
    </div>
  </div>
</div>

效果说明

这样设置后,不管头部的内容高度如何变化,内容区域都会自动填充弹窗剩余的空间。当内容区域的内容超出弹窗的max-height:300px限制时,就会在内容区域内部出现滚动条,而不会让整个弹窗超出高度限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:47:37