iOS安全区域适配导致页面底部被遮挡怎么办?
我在做移动端页面时,iPhone X及以上机型的底部导航栏总是被系统手势栏挡住,加了padding-bottom: env(safe-area-inset-bottom)也没用,是不是哪里写错了?
我试过在body和具体容器上都加了这个属性,但还是没效果,控制台也没报错,就是视觉上被盖住了。下面是我在CSS里写的代码:
.footer {
padding-bottom: env(safe-area-inset-bottom);
background: #fff;
position: fixed;
bottom: 0;
width: 100%;
}
你的CSS本身没写错,但
env(safe-area-inset-bottom)生效有个前提条件,就是页面内容要延伸到安全区域外。默认情况下iOS会把网页限制在安全区域内,所以你拿到的safe-area-inset-bottom值永远是0。解决办法很简单,在HTML的meta viewport标签里加上
viewport-fit=cover:这样页面才会真正铺满整个屏幕,safe-area-inset-bottom才能取到正确的值,你的padding才会生效。
另外建议CSS里加上constant做兼容,iOS 11.0到11.2用的是constant,11.2之后才改成env:
顺序别写反了,constant放前面,env放后面,这样新版本会覆盖旧版本的值。
改完刷新一下应该就好了,这问题坑了不少人。