美文网首页技术专栏
关于iphonX横屏显示兼容问题

关于iphonX横屏显示兼容问题

作者: 只会前端的切图仔 | 来源:发表于2018-05-23 17:21 被阅读170次

1.浏览器默认两边有加44像素留白(viewport-fit=container),如图显示
2.微信内嵌无论有没有设置viewport-fit=cover,均为全屏显示
3.ISO11.2之前的版本游戏内嵌时如果默认使用viewport-fit=containe设置,会导致左边留空,右边超出屏幕并出现横向滚动条的情况,所以要使用viewport-fit=cover设置,以全屏显示,
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0,minimal-ui,viewport-fit=cover">
同时使用全屏设置需要注意刘海遮挡的问题。
若需要左右留空可以使用safa-area-inset-***样式来将左右和上下的安全区域留空(若遮挡并不影响页面显示可不用设置):

<html>
<div class="wrapper">
    <div class="main"></div>
<div>
</html>

<style>
.wrapper{
    width:100%;
    height:100%;
    box-sizing:border-box;
    // padding-top: constant(safe-area-inset-top);    
    padding-right: constant(safe-area-inset-right);    
    // padding-bottom: constant(safe-area-inset-bottom);    
    padding-left: constant(safe-area-inset-left);
}
.main{
    width:100%;
    height:100%;
}
</style>

但是经过测试在IOS11_2_1版本中,safe-area-inset失效了,需要左右留空的情况可以通过JS判断IPX机型以及IOS版本号加上特殊处理。
后来到IOS11.3版本中,又变成全屏失效了,只能判断到11.3版本的直接去掉viewport-fit=cover"的设置,即只能左右安全区域留空,无法全屏显示

<style>
body{   
    &.ipx_ios11_2{       
        .wrapper{ 
            padding-left:44px;           
            padding-right:44px;       
        }   
    }
}
</style>

<script>
    var isIphoneX=/iphone/gi.test(navigator.userAgent) && (screen.height == 812 && screen.width == 375);          
    var isIos11_2=navigator.userAgent.toLowerCase().indexOf("cpu iphone os 11_2")>-1 ; 
    var isIos11_3=navigator.userAgent.toLowerCase().indexOf("cpu iphone os 11_3")>-1 ; 
    //如果需要左右留空 ,ios11.2下需要增加以下处理 ,全屏展示的无需处理             
    if(isIphoneX&&isIos11_2&&window.orientation!=0&&window.orientation!=180){                   
        $(document.body).addClass("ipx_ios11_2");   
    }
    //IOS11.3下无法支持全屏设置,只能左右留空,直接修改 viewport
    if(isIphoneX&&isIos11_3&&window.orientation!=0&&window.orientation!=180){
    $("meta[name='viewport']").attr('content', "width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0,minimal-ui,viewport-fit=contain");
    }
</script>

如下图所示(图1)横屏左边第一个灰色块大小为3042
黑色刘海尺寸为30
211,绿色触控操作安全区域宽度为44
第二个灰色块为30*82,

图1 图2

相关文章

  • 关于iphonX横屏显示兼容问题

    1.浏览器默认两边有加44像素留白(viewport-fit=container),如图显示2.微信内嵌无论有没有...

  • IOS app 开启横屏旋转方法

    手机横屏固定显示某个页面 手机 app 开启横屏, 横屏的时候, 手机显示固定的页面, 不管app 在哪个页面横屏...

  • 移动端开发-禁止横屏

    对于移动端的页面,很多时候是不希望横屏显示的,有可能横屏显示页面显示不全或者影响美观,也或者其他的方面。但是,横屏...

  • iOS开发设置指定页面横屏显示,其余页面竖屏显示

    iOS开发设置指定页面横屏显示,其余页面竖屏显示 假设跳转逻辑为:从A页面跳转至B页面,B页面需要始终横屏显示,其...

  • 基础知识3

    【通用设置】 一、横屏时提示用户请竖屏 ...

  • MBProgressHUD横屏适配

    在对程序横屏适配的时候,发现MBProgressHUD会出现显示方向异常在竖屏状态是正常显示;但在横屏状态,方向还...

  • 横屏显示界面

    选择project -> targets -> general下面的deployment info里面的portr...

  • SVProgressHUD横屏显示

    问题:在横屏的界面,使用SVProgressHUD时,展示的位置不对;我们需要的其实就是展示在屏幕的中间; 思路:...

  • 35.让指定页面横屏

    假设有两视图页面A和B,A竖屏显示,B要求横屏显示,C竖屏显示,NavigationController的root...

  • android EditText横屏显示问题

    我们都知道Android的EditText在横屏模式下,默认是全屏显示,但是日常需求需要横屏和竖屏显示的一样,在定...

网友评论

    本文标题:关于iphonX横屏显示兼容问题

    本文链接:https://www.haomeiwen.com/subject/jwtdjftx.html