我用CSS3 Flexbox设计了一个100%宽100%高的布局,它可以在IE11上工作(如果IE11的仿真是正确的,也可能在IE10上工作).

但是Firefox(35.0.1),overflow-y不起作用.正如您在此代码中看到的: http://codepen.io/anon/pen/NPYVga

Firefox未正确呈现溢出.它显示一个滚动条

html,
body {
  height: 100%;
  margin: 0;
  padding: 0;
  border: 0;
}
.level-0-container {
  height: 100%;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
  -ms-flex-direction: column;
  flex-direction: column; 
}
.level-0-row1 {
  border: 1px solid black;
  box-sizing: border-box;
}
.level-0-row2 {
  -webkit-box-flex: 1;
  -webkit-flex: 1;
  -ms-flex: 1;
  flex: 1;
  border: 1px solid black;
  box-sizing: border-box;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
  -webkit-flex-direction: row;
  -ms-flex-direction: row;
  flex-direction: row;
}
.level-1-col1 {
  width: 20em;
  overflow-y: auto;
}
.level-1-col2 {
  -webkit-box-flex: 1;
  -webkit-flex: 1;
  -ms-flex: 1;
  flex: 1;
  border: 4px solid blue;
  box-sizing: border-box;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
  -ms-flex-direction: column;
  flex-direction: column;
}
.level-2-row2 {
  -webkit-box-flex: 1;
  -webkit-flex: 1;
  -ms-flex: 1;
  flex: 1;
  border: 4px solid red;
  box-sizing: border-box;
  overflow-y: auto;
}
<html>
<body>

    <div class="level-0-container">

        <div class="level-0-row1">
            Header text
        </div>

        <div class="level-0-row2">

            <div class="level-1-col1">
                line <br/>
                line <br/>
                line <br/>
                line <br/>
                line <br/>
                line <br/>
                line <br/>
                line <br/>
                line <br/>
                line <br/>
                line <br/>
                line <br/>
                line <br/>
                
            </div>

            <div class="level-1-col2">

                    <div class="level-2-row1">
                        Some text
                        <p/> Some text 2
                        <p/> Some text 3
                        <p/> 
                    </div>

                    <div class="level-2-row2">
                        <p>some text</p>
                        <p>some text</p> 
                        <p>some text</p> 
                        <p>some text</p>
                        <p>some text</p>
                        <p>some test</p>
                    </div> 
                </div>

        </div>

    </div>
</body>


</html>

推荐答案

TL;DR:在你的.level-0-row2规则中,你需要min-height:0.(Here's a codepen with that fix)

More detailed explanation:

Flex项目建立一个默认最小的大小,这是基于他们子元素的内在大小(不考虑他们的子女/后代的"溢出"属性).

当你有一个flex项目的overflow: [hidden|scroll|auto] inside元素时,你需要给它的祖先flex项目min-width:0(在水平flex容器中)或min-height:0(在垂直flex容器中),以禁用这种最小大小调整行为,否则flex项目将拒绝缩小到小于子项目的最小内容大小.

请参见https://bugzilla.mozilla.org/show_bug.cgi?id=1043520以了解更多受此影响的站点示例.(请注意,在实现此规范文本之后,这只是一个用于跟踪因此类问题而中断的站点的metabug--它实际上不是Firefox中的bug.)

你不会在Chrome中看到这一点(至少在这篇文章中没有),因为它们是haven't implemented this minimum sizing behavior yet.(编辑:Chrome现在已经实现了这个最小尺寸的行为,但它们可能仍然是incorrectly collapse min-sizes to 0 in some cases.)

Css相关问答推荐

当面板以Angular 上升时如何定位下拉面板

如何将另一种自定义位置 colored颜色 添加到三角形CSS中?

如何在css中创建文件div效果

如何引用 SCSS 中的现有类?

排除特定元素的目标元素

如何使代码块输出在 quarto revealjs 演示文稿中水平滚动

使用 React JS 和自定义 CSS 创建 Cookie 横幅

Bootstrap 5 - 更改列顺序时出现问题

为什么同一个 CSS 类连续出现两次

如何在流线型多页面应用程序中在表情符号和页面名称之间留出一些空白

如何将 CSS 样式应用于 Quarto 输出

CSS3 - RotateY() 居中

我怎样才能在某些区域制作一个单独的文本行,而在其他区域制作一个实心填充?

宽度和高度似乎不适用于 :before 伪元素

定位背景图片,添加内边距

加载资源失败:服务器响应状态为 404(未找到)

如何在 Flexbox 中禁用等高列?

为什么浏览器会为 CSS 属性创建供应商前缀?

如何参加滚动事件?

将 -moz-available 和 -webkit-fill-available 放在一个宽度中(CSS 属性)