【发布时间】:2013-03-01 03:26:25
【问题描述】:
我正在尝试填充 Flexbox 中弹性项目的垂直空间。
.container {
height: 200px;
width: 500px;
display: flex;
flex-direction: row;
}
.flex-1 {
width: 100px;
background-color: blue;
}
.flex-2 {
position: relative;
flex: 1;
background-color: red;
}
.flex-2-child {
height: 100%;
width: 100%;
background-color: green;
}
<div class="container">
<div class="flex-1"></div>
<div class="flex-2">
<div class="flex-2-child"></div>
</div>
</div>
这是JSFiddle
flex-2-child 不会填充所需的高度,除非以下两种情况:
-
flex-2的高度为 100%(这很奇怪,因为弹性项目默认为 100% + 它在 Chrome 中是错误的) -
flex-2-child有一个绝对位置,这也很不方便
目前这在 Chrome 或 Firefox 中不起作用。
【问题讨论】:
-
使用height:100%有什么问题;对于 .flex-2 ?
-
它违背了 flex 项目的目的,即自行填充内容,它给了我 chrome 中最奇怪的错误,每当我调整窗口大小时高度就会回到零
-
其实只有最新版的火狐才能正常运行
-
目前,在 flexbox 中渲染百分比高度时,浏览器之间的行为存在显着差异:stackoverflow.com/a/35537510/3597276
-
是的,Chrome 有一些问题,尤其是嵌套弹性盒。例如,我有一个嵌套的 flex 盒子,其中的孩子有
height:100%,但他们正在以自然高度渲染。奇怪的是,如果我将它们的高度更改为auto,那么它们会呈现为height:100%,就像我试图做的那样。如果它应该是这样工作的,那肯定是不直观的。