web app 一分钟适配 iPhone X

明天就要开抢 iPhone X 了,然而面对 iPhone X 这个奇葩的屏幕,你准备好了吗?web

由于 iPhone X 的刘海设计,Web 在 iPhone X 安全

横屏
时,可能会有些问题:

  1. 默认状况,iPhone X 会将页面填充到安全区域(safe area),就像上面的图同样,通常状况下是没有问题的;
  2. 但若是是全屏 Web App 就会有问题了,好比背景色和页面的契合程度之类的;
  3. 有的 iOS app 内置 WKwebview 可能会为了不一些bug,而采用统一的行为,就是禁用 iOS 11 本身的内容区域判断,从而让 H5 默认全屏,以下图:

解决方案

1. 默认全屏

<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">  
复制代码

在 viewport 的 meta 属性中,添加 viewport-fit=cover 便可。bash

viewport-fit 默认值为 auto/contain,全屏值为cover,是否是感受很熟悉?嗯,和 background-size 以及 object-fit 同样的。app

2. 设置页面边距为安全区域边距

body{  
    padding: 
        constant(safe-area-inset-top) 
        constant(safe-area-inset-right) 
        constant(safe-area-inset-bottom) 
        constant(safe-area-inset-left);  
}
复制代码

嗯,constant() 以及 safe-area-inset-top safe-area-inset-right safe-area-inset-bottom safe-area-inset-left 是 iOS 11 webview 新增长的特性,专门用于应对刘海的。。。spa

固然,这里的padding只是用于匹配iPhone X默认的安全区域的,你能够设置任何值,不过建议要不小于默认的安全区域值。设计

当前版本,横屏时,各属性的值3d

safe-area-inset-top = 0  
safe-area-inset-right = 44px  
safe-area-inset-bottom = 21px  
safe-area-inset-left = 44px  
复制代码

竖屏时各值都是 0,但竖屏时须要特别留意 status-bar(44px) 和 home-indicator(34px)。code

相关文章
相关标签/搜索