H5 在全面屏 IOS 的适配
ON THIS PAGE
这里的适配主要说的是IOS webview 的使用场景。
webview 网页默认会在状态栏和底部安全区域保持间距,这样是想让内容能完整的展示在屏幕上,不会被刘海或者底部的白条遮挡。
有时为了增强 H5 页面整体的视觉体验,我们希望将 H5 铺满整个屏幕。
解决方案也很简单,苹果推出全面屏手机之后,在新系统上增加了 viewport-fit 属性
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
viewport-fit 的默认值是 contain, 当设置成 cover,页面就会自动占满整个屏幕。
为了让开发者更好的适配安全区域, 在 ios11 之后系统上,css 新增了 safe-area-*
safe-area-inset-top
safe-area-inset-right
safe-area-inset-bottom
safe-area-inset-right
通过属性名就能很容易的猜测出分别代表着四个方向的安全距离。
如果现在想设置一个底部安全区域的 padding 就可以这样做:
.padding-bottom-safe {
padding-bottom: constant(safe-area-inset-bottom);
padding-bottom: env(safe-area-inset-bottom);
}
ios11.0 上新增了 constant,ios11.2发布之后又新增了 env 替代 constant,现阶段为了兼容性,最好将两个属性全设置上,两个属性不会造成冲突,在不支持的系统上会被忽略。
constant 和 env 可以很好的和 calc 搭配使用,所以我们也可以这样设置:
.padding-bottom-with-safe {
padding-bottom: calc(constant(safe-area-inset-bottom) + 10px);
padding-bottom: calc(env(safe-area-inset-bottom) + 10px);
}
在全面屏 iphone 上,padding 值等于底部安全距离 + 10px;
在其他的支持 calc 的 iphone 和 android 上,都将设置为 10px;
constant 和 env 同样适用于微信小程序。
ios WKWebView 同时设置下面的 CSS 属性会出现问题
html,body {
height: 100%;
}
我们想让内容高度100%,可是底部出现了间距,间距的高度等于安全区域的高度。
解决办法是将 100% 更改为 100vh
具体原因可以点这里查看
2020-07-30
上一篇:macOS安装使用nginx
下一篇:Git的使用