iPhone底部安全区域适配不生效怎么办?
我在做移动端页面时,发现 iPhone X 及以上机型的底部导航栏被圆角和 Home Indicator 遮挡了。明明加了 padding-bottom: env(safe-area-inset-bottom),但完全没反应,布局还是顶到最底下。
我试过在 meta viewport 里加上 viewport-fit=cover,也确认了 CSS 里用了 env() 函数,但就是不生效。是我写法有问题吗?
.footer {
position: fixed;
bottom: 0;
left: 0;
width: 100%;
padding-bottom: env(safe-area-inset-bottom);
background: #333;
color: white;
text-align: center;
}
先确认下你的 meta viewport 是不是这样写的:
然后你的 CSS 写法有个常见坑,position: fixed 的元素需要同时设置 box-sizing: border-box,不然 padding 会撑开元素而不是向内收缩。试试这样改:
如果还不行,可能是 Safari 缓存问题。真机调试时经常遇到这种玄学情况,先试试:
1. 完全关闭 Safari 再重新打开
2. 在设置里清除 Safari 缓存
3. 用其他 iPhone 测试看看
另外注意 env() 在 iOS 11+ 才支持,如果你要兼容更老版本可以加个 fallback:
padding-bottom: constant(safe-area-inset-bottom); / iOS 11.0 /
padding-bottom: env(safe-area-inset-bottom); / iOS 11.2+ /