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

如何阻止flexbox容器自动撑大,内容超出时改为显示滚动条

问题原因

flex布局的子元素默认min-height值为auto,该规则会让flex子元素的高度优先匹配内部内容的高度,不会被父容器限制尺寸,因此即使你给内部容器设置了overflow: auto,也不会触发滚动条,反而会把外层容器撑大。你之前只配置了flex-basis和flex-grow,没有覆盖默认的min-height规则,所以配置不生效。

解决方案

只需要在两个flex子元素上添加min-height: 0配置即可,无需设置固定高度:

  1. 给.MainPage添加min-height: 0,它是.App(竖向flex容器)的子元素
  2. 给.Sidebar添加min-height: 0,它是.MainPage(横向flex容器)的子元素

修改后的完整CSS代码如下:

.App {
  background-color: black;
  display: flex;
  flex-direction: column;
  flex: 1;
}
    
.Nav {
  flex: 1;
}
    
.MainPage {
  display: flex;
  flex: 1;
  background-color: turquoise;
  min-height: 0; /* 新增规则 */
}
    
.Sidebar {
  flex: 1;
  background-color: thistle;
  display: flex;
  min-height: 0; /* 新增规则 */
}
    
.LinksToOtherMessagesFromUser {
  margin: 3vh;
  flex: 1; /* 等价于flex-grow:1; flex-shrink:1; flex-basis:0; */
  background-color: blue;
  overflow: auto;
}
    
.Message {
  background-color: violet;
  flex: 1;
}
    
body {
  height: 100vh;
  display: flex;
  flex-direction: row;
}

修改后内部内容超出时会自动在LinksToOtherMessagesFromUser容器上出现滚动条,外层容器不会被撑大,高度完全基于父元素的分配比例,不需要设置固定max-height。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:45:04