css – iOS 7 iPad Safari风景innerHeight/outerHeight布局问题

前端之家收集整理的这篇文章主要介绍了css – iOS 7 iPad Safari风景innerHeight/outerHeight布局问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们在iOS 7的Safari上看到一个Web应用程序的高度为100%的问题。window.innerHeight(672px)与window.outerHeight(692px)不匹配,但仅在横向模式下。最终发生的事情是,在一个应用程序的身高100%的高度,你得到20px的额外空间。这意味着,当用户在我们的应用程序上向上滑动时,导航元素被拉到浏览器chrome之后。这也意味着在屏幕底部的任何绝对定位的元素最终都是20px。

这个问题在这个问题中也有概述:
IOS 7 – css – html height – 100% = 692px

并且可以在这个模糊的屏幕截图中看到:

我们想要做的是破解这个,所以,直到苹果修复的bug,我们不必担心它。

这样做的一种方式是绝对定位的身体只有在iOS 7,但这几乎是额外的20px在页面的顶部而不是底部

body {
    position: absolute;
    bottom: 0;
    height: 672px !important;
}

任何帮助强制outerHeight匹配innerHeight,或黑客它,使我们的用户不能看到这个问题,将非常感谢。

解决方法

在我的情况下,解决方案是将定位更改为固定:
@media (orientation:landscape) {
    html.ipad.ios7 > body {
        position: fixed;
        bottom: 0;
        width:100%;
        height: 672px !important;
    }
}

我也使用脚本来检测iPad与iOS 7:

if (navigator.userAgent.match(/iPad;.*cpu.*OS 7_\d/i)) {
    $('html').addClass('ipad ios7');
}

猜你在找的CSS相关文章