美文网首页
webapp一分钟适配iPhone X

webapp一分钟适配iPhone X

作者: 萧玄辞 | 来源:发表于2017-12-22 19:38 被阅读0次

    因为 iPhone X 的刘海设计,Web 在 iPhone X 横屏时,可能会有些问题:

    默认情况,iPhone X 会将页面填充到安全区域(safe area),就像上面的图一样,一般情况下是没有问题的;

    但如果是全屏 Web App 就会有问题了,比如背景色和页面的契合程度之类的;

    有的 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 即可。

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

    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 新增加的特性,专门用于应对刘海的。。。

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

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

    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)。

    对于web前端学习有不懂的,或者不知道学习路线,不知道学习方法,不知道该如何扎实能找到工作的朋友,可以来我们头条前端群:592569448,我整理了非常专业的JavaScript、jQuery、bootstrap、angularJS、react、nodejs等企业级框架项目实战,还有PDF文档资料都上传到网盘了。

    相关文章

      网友评论

          本文标题:webapp一分钟适配iPhone X

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