首页>>前端>>JavaScript->做移动端Web页面时,处理IOS的安全区域

做移动端Web页面时,处理IOS的安全区域

时间:2023-11-30 本站 点击:1

开头

从苹果手机 iphoneX 发布之后,前端人员在开发移动端Web页面时,得多注意一个对 IOS 所谓安全区域范围的适配。这其实说白了就是 iphoneX 之后的苹果手机,在页面上,你需要对顶部和底部多预留一点空间。

造成这个问题的主要原因就是苹果手机在屏幕上出现了所谓的刘海屏,而且更是在屏幕下方加了一条小黑条。

如图:

我们上下预留的占位空间就是为了防止我们页面的内容被这些元素遮挡,但是如果你做的页面只是放在一些浏览器(微信内置浏览器)内传播,一般我们也不需要处理顶部刘海问题,顶部一般就是原生的标题栏了,不用我们管。但如果你的页面会被内嵌在 APP 展示且 APP 是全屏展示的,那么这个问题还是得处理一下。

下面我们分别介绍一下通过 CSSJS 怎么去处理,根据场景你可以自行选择。

CSS

iOS11 新增特性中,Webkit 包含了两个新的函数 env()constant(),以及四个预定义的常量:

safe-area-inset-top:安全区域距离顶部边界距离,状态栏+导航栏大约为88px。

safe-area-inset-left:安全区域距离左边边界距离,竖屏时为0。

safe-area-inset-right:安全区域距离右边边界距离,竖屏时为0。

safe-area-inset-bottom:安全区域距离底部边界距离,大约高度为34px。

我们可以这样子使用它们:

body{/*兼容iOS<11.2*/padding-top:constant(safe-area-inset-top);padding-left:constant(safe-area-inset-left);padding-right:constant(safe-area-inset-right);padding-bottom:constant(safe-area-inset-bottom);/*兼容iOS>=11.2*/padding-top:env(safe-area-inset-top);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);}

当然,你也可以在某个固定(fixed)在底部的元素上单独使用:

div{padding-bottom:constant(safe-area-inset-bottom);padding-bottom:env(safe-area-inset-bottom);}

JS

当然,有时候单纯的 CSS 方式并不能满足实际的需求场景,那么我们就需要判断出那些 IOS 的手机屏幕是需要特殊处理的。

iphoneX 之后的苹果手机 Series 参数如下:

机型倍率分辨率ptiPhone X32436 × 1125812 × 375iPhone XS32436 × 1125812 × 375iPhone XS Max32688 × 1242896 × 414iPhone XR21792 × 828896 × 414

根据这些参数我们把苹果手机的长屏,也就是拿屏幕的高度用来当成判断条件:

/***判断IOS异形屏*@returns*/exportfunctionisIphoneX(){if(typeofwindow!=='undefined'&&window){varfaultTolerantVal=10;//容错值return/iphone/gi.test(window.navigator.userAgent)&&(window.screen.height+faultTolerantVal)>=812;}returnfalse;};

至此,本篇文章就写完啦,撒花撒花。

希望本文对你有所帮助,如有任何疑问,期待你的留言哦。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/JavaScript/3929.html