iPhone X上的WKWebView页面高度问题

我发现如果我用WKWebView

viewport-fit=cover 

 body :{height:100%} 

html body的高度仍然达不到iPhone X的底部,等于safeArea的高度,但背景色可以覆盖全屏。

https://ue.qzone.qq.com/touch/proj-qzone-app/test.html

我在一个全屏的WKWebView中加载这个页面来重现这个问题。

我在我的cordova应用程序中解决了这个问题。

Samantha的解决scheme在某种程度上为我工作,但在html标签中设置的高度为812px,导致在横向和其他设备上出现问题。 最终我发现,只针对iPhone X大小的屏幕与横向和纵向的CSS媒体查询做了伎俩。

宽度和高度像素值需要被声明为重要的,以便iPhone接受它们。

 @media only screen and (device-width : 375px) and (device-height : 812px) and (-webkit-device-pixel-ratio : 3) and (orientation : portrait) { html { height: 812px !important; width: 375px !important; } } @media only screen and (device-width : 375px) and (device-height : 812px) and (-webkit-device-pixel-ratio : 3) and (orientation : landscape) { html { width: 812px !important; height: 375px !important; } } 

在你的代码中,如果你添加

opacity: 0.5;

到html和body标签,你会发现body标签确实占据了整个屏幕,而html标签的高度只有安全区域的高度。

如果你只是希望html区域达到边缘,你可以明确地设置:

<html style='height: 812px;'>

这将使html内容适合整个屏幕,只要你还添加:

<meta name="viewport" content="initial-scale=1.0, viewport-fit=cover">

当然不是最优雅的解决scheme,但它确实有效。