最近在移动端项目上遇到了底部tab切换被iPhoneX 和 iPhoneX Max 的小黑条影响到的问题,经过多次调试,最终的解决方案如下:
1. 新增 viweport-fit 属性,使得页面内容完全覆盖整个窗口
(千万不要忘了,不然后面样式都没效果)
<meta name="viewport" content="initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no, width=device-width,viewport-fit=cover">
2.页面主体内容限定在安全区域内
body {
padding-bottom: constant(safe-area-inset-bottom);
padding-bottom: env(safe-area-inset-bottom);
}
3.fixed 元素的适配
/*iphoneX*/
@media only screen and (device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) {
.van-tabbar--fixed{
padding-bottom: 10px !important;
padding-bottom: constant(safe-area-inset-bottom);
padding-bottom: env(safe-area-inset-bottom);
}
}
/*iphoneX Max*/
@media only screen and (device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) {
.van-tabbar--fixed{
padding-bottom: 10px !important;
padding-bottom: constant(safe-area-inset-bottom);
padding-bottom: env(safe-area-inset-bottom);
}
}
以上就解决了