【问题标题】:Making flexbox container override content height? [duplicate]让 flexbox 容器覆盖内容高度? [复制]
【发布时间】:2019-04-26 20:27:49
【问题描述】:

我正在尝试使用 Flexbox 来获得一个布局,其中顶部有一个栏,页面其余部分有内容。测试用例位于:

http://game-point.net/misc/flextest/

有趣的是,谷歌浏览器已经按照我想要的方式运行了;当视口在垂直方向上太小(所有浏览器似乎都在水平方向做我想要的),content div 中的内容会溢出 div,Chrome 会为内容显示一个垂直滚动条。但是在 Edge 和 Firefox 中,当视口在垂直方向上太小时,content div 本身的大小永远不会垂直小于其文本内容,因此它会溢出视口,导致整个视口获得垂直滚动条而不是不仅仅是content div。区别如下:

Chrome:

不是 Chrome:

哪些浏览器正确实现了 flexbox,如何让 Firefox 和 Edge 像 Chrome 一样只滚动内容框,而不是整个视口?

【问题讨论】:

  • 你能把overflow: auto移到.content-container上吗?
  • 这似乎没有任何改变。
  • 请特别查看我在副本中答案的结尾,以了解浏览器行为差异的解释。

标签: javascript html css google-chrome flexbox


【解决方案1】:

如果它不违背您项目中的其他理想,您可以修复容器的高度,以便可滚动区域正确呈现。

div.header {
  height: 72px;
}

div.content-container {
  height: calc(100% - 72px);
}

【讨论】:

    【解决方案2】:

    原来我需要删除 content-container 并直接在外部 container div 中添加 content

    【讨论】:

    • 这不是最佳解决方案,也没有解决根本问题。您需要在内容项上使用min-height: 0overflow: auto
    • 我在内容 div 上使用overflow: auto
    • 我无法再在您的代码示例中重现该问题。请在您的问题中发布相关代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多