iPhone 17 全系采用灵动岛设计,取代了 iPhone 16e 上的刘海。这个变化导致顶部安全区高度从 47pt 增加到 59pt,很多原本在 iPhone 16e 上正常的页面,在 iPhone 17 上会出现顶部导航被遮挡或错位。
常见问题有三个:
第一,固定定位的顶部导航被遮挡。 如果你的导航栏用了 position: fixed; top: 0 并且高度只有 44px,在 iPhone 17 上会被灵动岛覆盖大约 15px。解决方案是给导航栏加 padding-top: env(safe-area-inset-top),让内容自动下移。
第二,页面顶部出现空白条。 如果你在 viewport meta 里没有加 viewport-fit=cover,iOS 会把整个页面限制在安全区内,导致顶部留出 59pt 的白色区域。
第三,iPhone 16e 正常但 iPhone 17 错位。 两款机型的 safe-area-inset-top 差了 12pt,如果你的代码里写死了 padding-top: 47px,那就只能在 16e 上正常。永远不要硬编码安全区数值,一律用 env()。
在下方预览器输入你的网址,同时对比 iPhone 16e(刘海)和 iPhone 17(灵动岛),一眼看出顶部适配是否有问题。