【发布时间】:2017-06-27 17:20:40
【问题描述】:
我有一个带有 max-height 的 flexbox 容器。它有两个孩子,水平弯曲,其中一个有overflow: auto。在 Chrome 中,溢出的子元素一旦达到容器的最大高度就会停止增长并滚动。在 Firefox 中,它会溢出容器。
我正在针对最新的 Chrome(目前为 59)进行开发,但必须支持 Firefox 40+,因此我正在使用 Firefox 40 进行测试。作为参考,caniuse.com 报告为 FF40 fully supports flexbox。
这显然在较新的 FF 版本中正常工作,但在我正在使用的 FF40 中却不能正常工作,所以对于那些无法访问旧 FF 的人,这里是我看到的行为的屏幕截图:
我可以通过消除左侧的孩子并在容器上设置flex-direction: column 来解决此问题,但不幸的是,我的实际应用程序需要左侧的内容并且需要水平弯曲。
为什么会出现跨浏览器的差异?有什么跨浏览器解决方案可以让溢出的孩子像在 Chrome 中那样停止增长?
div { padding: 10px; }
#container {
border: 1px solid green;
display: flex;
max-height: 200px;
}
#left {
border: 1px solid purple;
flex: 1;
}
#right {
border: 1px solid orange;
flex: 3;
overflow: auto;
}
<div id="container">
<div id="left">
Left content
</div>
<div id="right">
I stop growing at 200px tall in Chrome, but not in Firefox
<ul>
<li>Stuff</li>
<li>Stuff</li>
<li>Stuff</li>
<li>Stuff</li>
<li>Stuff</li>
<li>Stuff</li>
<li>Stuff</li>
<li>Stuff</li>
<li>Stuff</li>
<li>Stuff</li>
<li>Stuff</li>
<li>Stuff</li>
<li>Stuff</li>
</ul>
</div>
</div>
【问题讨论】:
-
我在 Chrome、Firefox 和 Edge 上得到了完全相同的行为。看不出有什么不同。
-
我应该报告我正在使用 Firefox 40 和 Chrome 58。所以我的 FF 版本有点旧,但 caniuse.com 确实说完全支持 flexbox。
-
@dippas 您的建议没有帮助。我的问题是我必须支持那个浏览器版本,这意味着这不是我的决定。更多背景知识:我无法控制此特定应用程序的最低浏览器要求。这是我的客户规定的。我无权更改或提出更改建议。
-
@Michael_B:不同的问题。您链接到的问题描述了内容溢出其弹性项目父级的最小尺寸约束(以及您建议的解决方法),这与弹性项目溢出其父级弹性容器并具有最大尺寸约束有关。
标签: html css cross-browser flexbox