H5解决ios下刘海屏的问题

全面屏手机把整个webview(包括状态栏)给H5的话,头部的返回按钮会置于页面的安全区外,会盖住header区域,导致无法后退等其他操作。

 

先说下constant 函数

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

safe-area-inset-left
safe-area-inset-right
safe-area-inset-top
safe-area-inset-bottom

constant :针对iOS < 11.2以下系统

env :针对于iOS >= 11.2的系统

这两个函数都是 webkit 中 css 函数,可以直接使用变量函数,只有在 webkit 内核下才支持

网页默认不添加扩展的表现是 viewport-fit=contain ,需要适配 iPhone 必须设置 viewport-fit=cover才起作用

 先设置网页在可视窗口的布局方式

<meta name='viewport'  content="width=device-width, viewport-fit=cover"  />

页面主体内容限定在安全区域内

body {
  /* 适配齐刘海*/
  padding-top: constant(safe-area-inset-top);  
 /* 适配底部黑条*/
  padding-bottom: constant(safe-area-inset-bottom);
}

  

如果页面头部用的是非定位的,页面的主体部分和按钮用的是absolute定位时,要记得给主体部分添加如下样式:

margin-top: constant(safe-area-inset-top);
margin-top: env(safe-area-inset-top);

  

posted @ 2022-11-10 16:55  紫诺花开  阅读(346)  评论(0编辑  收藏  举报