iPhone 横过来以后左侧内容被刘海切掉一块,右侧按钮贴着屏幕边,只测竖屏根本发现不了,上线后才被反馈。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,横屏时安全区跑到左右两侧,只写了底部 env(safe-area-inset-bottom) 的页面拿不到左右值,容器还按 100% 铺满,padding 就缺了一边。左右两侧都要各留一份,缺一边看着别扭。

「横屏安全区」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。报错里带路径的,先去看那个路径在不在、权限对不对。

.wrap {
  padding-left: max(16px, env(safe-area-inset-left));
  padding-right: max(16px, env(safe-area-inset-right));
}

同一份配置存在多处的,先确认改的是被加载的那一份。

具体做法是,给外层容器加左右内边距,用 env 系列的 left 和 right 变量分别取值;用 max() 保证没有安全区的设备也有基础留白,别留成零;横竖屏各截一张图对比,只测竖屏等于没测,这个检查花不了两分钟。

最后用这个标准收尾,横屏下正文完整露出,按钮不贴边,竖屏间距和原来一致,横屏竖屏都量一遍。

作者 9823189