【发布时间】:2019-12-25 00:44:17
【问题描述】:
在 Chrome、Edge 和 FireFox 中,以下代码生成(正确)输出,其中最内层的 div 使用 min-height: 100% 填充其父级。但是,在 Safari 中不会发生这种情况。我希望绿色 div 完全被它的孩子覆盖。
这是为什么呢? / 如何获得正确的行为?
.container {
display: flex;
flex-direction: column;
height: 80vh;
}
.item1 {
flex-shrink: 0;
background: red;
}
.item2 {
flex-grow: 1;
background: green;
}
.inner {
background: blue;
min-height: 100%;
}
<div class="container">
<div class="item1">Random text for size</div>
<div class="item2">
<div class="inner"></div>
</div>
</div>
【问题讨论】:
-
将
display:flex添加到 item2 中,你会得到这个(你也可以摆脱 min-height).. 不知道为什么它在 Safari 上不起作用。顺便说一句,为什么它可以在其他浏览器上运行也不是微不足道的 -
它在 Safari 中不起作用,因为 Safari 仍然需要父级上的显式高度才能在子级上工作的百分比高度。其他主要浏览器也在不断发展,也接受 flex 高度作为参考。