7

我有一个非常简单的情况,我想将一个容器元素设置为80vh,然后将内部 div 设置为该高度的 100%。在 Chrome 上这将正确呈现,但在 Safari 上,内部元素没有 100% 的80vh高度。

.container {
    background-color: red;
    width: 100%;
    height: 80vh;
}

.inner {
    height: 100%;
    background-color: blue;
}

这是一个显示此问题的小提琴:http: //jsfiddle.net/neilff/24hZQ/

在 Chrome 中元素为蓝色,在 Safari 中为红色。是否有解决此问题的方法而不适用于div80vh的高度?.inner

4

3 回答 3

18

vh这是 Safari中的一个已知错误vwheight: inherit您可以通过设置内部元素来修复它:

.inner {
    height: inherit;
}

http://jsfiddle.net/24hZQ/47/

于 2014-09-11T19:59:31.590 回答
1

您需要设置position: absolute;元素.inner

.container {
    background-color: red;
    width: 100%;
    height: 80vh;
    position: relative;
}

.inner {
    height: 100%;
    background-color: blue;
    position: absolute;
    width: 100%;
}   
于 2014-09-07T08:12:57.980 回答
1

您可以使用 flexbox(在 Safari 7.0.6、iOS 7 和 iOS 8.0 模拟器中测试)来实现这一点 -

http://jsfiddle.net/clintioo/zkmnomab/

.container {
    background-color: red;
    width: 100%;
    height: 80vh;  
    display: -webkit-box;
    display: -moz-box;
    display: -ms-flexbox;
    display: -webkit-flex;
    display: flex;
    -ms-flex-direction: column;
    -webkit-flex-direction: column;
    flex-direction: column;
}

.inner {
    -ms-flex: 1;
    -webkit-flex: 1;
    -webkit-box-flex: 1.0;
    flex: 1;
    background-color: blue;
}
于 2014-09-08T05:37:47.340 回答