我正在尝试填充Flexbox中的弹性项的垂直空间。

.容器{高度:200px;宽度:500px;显示:柔性;弯曲方向:行;}.flex-1型{宽度:100px;背景色:蓝色;}.flex-2型{位置:相对;挠曲:1;背景色:红色;}.flex-2-儿童{高度:100%;宽度:100%;背景色:绿色;}<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%(这很奇怪,因为默认情况下flex-2具有100%的高度,而且在Chrome中存在bug)flex-2-child具有绝对位置,这也不方便

这在Chrome或Firefox中目前不起作用。


当前回答

.容器{. . . . 对齐项目:拉伸;. . . .}

其他回答

如果我理解正确,您希望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项,但它的父项是。

这也可以通过对齐自身来解决:拉伸;在我们想要拉伸的元素上。

有时,在Flexbox设置中只拉伸一个项目是可取的。

.容器{高度:200px;宽度:500px;显示:柔性;弯曲方向:行;}.flex-1型{宽度:100px;背景色:蓝色;}.flex-2型{位置:相对;挠曲:1;对齐自身:拉伸;背景色:红色;}.flex-2-儿童{背景色:绿色;}<div class=“container”><div class=“flex-1”></div><div class=“flex-2”><div class=“flex-2-child”></div></div></div>

.容器{. . . . 对齐项目:拉伸;. . . .}

.容器{高度:200px;宽度:500px;显示:-moz框;显示:-webkit flexbox;显示:-ms flexbox;显示:-webkit flex;显示:-moz flex;显示:柔性;-webkit flex方向:行;-moz-flex方向:行;-ms flex方向:行;弯曲方向:行;}.flex-1型{柔性:100像素;背景色:蓝色;}.flex-2型{-moz-box flex:1;-webkit flex:1;-moz-flex:1;-ms flex:1;弹性:100%;背景色:红色;}.flex-2-儿童{弹性:100%;高度:100%;背景色:绿色;}<div class=“container”><div class=“flex-1”></div><div class=“flex-2”><div class=“flex-2-child”></div></div></div>

http://jsfiddle.net/2ZDuE/750/

一个想法是显示:flex;弯曲方向:行;正在用.flex-1和.flex-2填充容器div,但这并不意味着.flex-2具有默认高度:100%;,即使它延伸到全高。

并且具有高度为100%的子元素(.flex-2-child);,您需要将父对象设置为高度:100%;或使用显示器:flex;弯曲方向:行;在.flex-2分区上。

据我所知,display:flex不会将所有子元素的高度扩展到100%。

一个小演示,去掉了.flex-2-child的高度,并使用了display:flex;在flex-2上:http://jsfiddle.net/2ZDuE/3/