blog icon indicating copy to clipboard operation
blog copied to clipboard

H5适配ios全面屏

Open LiuL0703 opened this issue 5 years ago • 0 comments

适配ios全面屏

对于iPhone X等全面屏的适配问题,IOS11提出了一个安全区域的概念,安全区域指的是一个可视窗口范围,处于安全区域的内容不受圆角(corners)、齐刘海(sensor housing)、小黑条(Home Indicator)影响,要做好适配,必须保证页面可视、可操作区域是在安全区域内 对于适配ios全面屏,ios对现有 viewport meta 标签的一个扩展,用于设置网页在可视窗口的布局方式,可设置三个值:

  • contain: 可视窗口完全包含网页内容
  • cover:网页内容完全覆盖可视窗口
  • auto:默认值,跟 contain 表现一致

【注意:网页默认不添加扩展的表现是 viewport-fit=contain,需要适配 iPhoneX 必须设置 viewport-fit=cover,这是适配的关键步骤】

iOS11 新增特性,Webkit 的一个 CSS 函数,用于设定安全区域与边界的距离,有四个预定义的变量

  • safe-area-inset-left:安全区域距离左边边界距离
  • safe-area-inset-right:安全区域距离右边边界距离
  • safe-area-inset-top:安全区域距离顶部边界距离
  • safe-area-inset-bottom:安全区域距离底部边界距离

【当 viewport-fit=contain 时 env() 是不起作用的,必须要配合 viewport-fit=cover 使用。对于不支持env() 的浏览器,浏览器将会忽略它】 同时为了向后兼容ios11.2~ios11.0 需要使用关键字 constant 而不是env

css-attribute: constant(safe-area-inset-bottom); /* 兼容 iOS < 11.2 */
css-attribute: env(safe-area-inset-bottom); /* 兼容 iOS >= 11.2 */

注意:env() 跟 constant() 需要同时存在,而且顺序不能换

更多内容可以参考文档:webkit.org

LiuL0703 avatar Oct 13 '19 05:10 LiuL0703