我正在尝试填充FlexBox内flex项目的垂直空间。
null
.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>
null
这是JSFiddle
flex-2-child
不能填充所需高度,以下两种情况除外:
Flex-2
的高度为100%(这很奇怪,因为默认情况下flex项的高度为100%+它在Chrome中有错误)flex-2-child
位置绝对,这也不方便目前这在Chrome或Firefox中都不起作用。
与David Storey的回答类似,我的解决办法是:
.flex-2 {
display: flex;
align-items: stretch;
}
作为align-items
的另一种选择,您可以只在要拉伸的.flex-2-child
项上使用align-self
。
我在这里回答了一个类似的问题。
我知道你已经说过position:absolute;
不方便,但它很管用。 有关修复大小调整问题的更多信息,请参见下文。
也请看这个jsFiddle的演示,尽管我只在Chrome中添加了如此开放的webkit前缀。
你基本上有两个问题,我将分别处理。
position:relative;
。位置:绝对;
。overflow-y:auto;
放在可滚动的分区上。height:0;
有关滚动问题的更多信息,请参阅此答案。
如果我理解正确的话,你想让flex-2-child填充其父级的高度和宽度,这样红色区域就被绿色完全覆盖了?
如果是,您只需将flex-2设置为使用FlexBox即可:
.flex-2 {
display: flex;
}
然后告诉flex-2-child变得灵活:
.flex-2-child {
flex: 1;
}
参见http://jsfiddle.net/2zdue/10/
原因是flex-2-child不是flexbox项,但其父项是。