使用 env() 函数配合 css 变量实现 iphone 底部安全区域适配。在根元素或容器上设置 padding-bottom: env(safe-area-inset-bottom),即可让内容自动避开 home indicator。

safe-area-inset-bottom 在不同机型上的表现差异
safe-area-inset-bottom 的值取决于设备是否有物理 Home 键或虚拟导航条。全面屏 iPhone(如 X 及后续机型)该值为 34px,而旧款机型为 0px。

.container {
padding-bottom: env(safe-area-inset-bottom, 20px);
}
上述代码中,20px 是 fallback 值。当浏览器不支持 env() 时,将回退到 20px。对于支持的设备,实际 padding 会根据系统动态计算。
如何结合 vh 单位解决高度溢出问题
直接使用 height: 100vh 会导致内容被底部安全区域遮挡。应使用 dvh (dynamic viewport height) 或手动计算。

.full-height {
height: 100dvh;
display: flex;
flex-direction: column;
}
.content {
flex: 1;
padding-bottom: env(safe-area-inset-bottom);
}
使用 100dvh 确保视口高度包含安全区域。内部内容通过 flex: 1 填充剩余空间,并额外添加底部 padding 以避开遮挡。
底部固定按钮在安全区域内的布局验证
当按钮固定在底部时,需确保其完全位于安全区域内,避免被 Home Indicator 覆盖。
.fixed-btn {
position: fixed;
bottom: 0;
left: 0;
right: 0;
padding-bottom: env(safe-area-inset-bottom);
background: #fff;
box-shadow: 0 -2px 10px rgba(0,0,0,0.1);
}
此样式使按钮始终贴合屏幕底部,且内容区域自动避开安全区域。测试发现,在 iPhone 13 Pro 上,按钮文字距离边缘约 34px,符合预期。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











