rel="apple-touch-startup-image" 已被 safari 完全弃用,ios 7 后失效,现代版本(ios 15+/safari 16+)静默忽略;替代方案仅剩原生打包或 pwa manifest 自动生成首屏快照,或用内联 css/js 模拟启动效果。

rel="apple-touch-startup-image" 已被 Safari 完全弃用
这个 rel 值在 iOS 7 之后就不再起作用,现在所有现代 iOS 版本(包括 iOS 15+ 和 Safari 16+)完全忽略它。你写上 <link rel="apple-touch-startup-image" href="splash.png">,页面加载时不会显示任何启动图——不是配置错,是根本没这机制了。
iOS 启动图必须用 native app 方式或 PWA manifest
Web App 在 iOS 上实现类似原生启动图效果,只剩两条路:
- 打包为原生应用(如通过 Cordova、Capacitor),由 Xcode 提供
LaunchScreen.storyboard或启动图片资产 - 作为 PWA 安装到主屏幕后,靠
manifest.json中的icons和start_url配合系统自动生成启动画面(iOS 会截取首屏渲染快照,不支持自定义图片)
注意:iOS 不读取 manifest.json 里的 splash_pages 或其他扩展字段,只用图标尺寸推断启动图比例;且首次加载时仍会显示白屏或灰底,直到首屏 DOM 渲染完成。
曾经有效的 link 标签写法(仅兼容 iOS 6–7,勿再用)
如果你在老项目里看到类似代码,它长这样:
在 macOS 上发现并控制 Apple 媒体/AirPlay 设备(HomePod、Apple TV、AirPlay 扬声器)。适用于扫描 AirPlay 设备、映射名称到 IP/ID、配对连接,以及利用 pyatv 和 Airfoil 控制播放与音量。
<link rel="apple-touch-startup-image" href="launch-320x460.png" media="(device-width: 320px) and (device-height: 480px) and (-webkit-device-pixel-ratio: 1)"><link rel="apple-touch-startup-image" href="launch-640x920.png" media="(device-width: 320px) and (device-height: 480px) and (-webkit-device-pixel-ratio: 2)"><link rel="apple-touch-startup-image" href="launch-640x1096.png" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2)">
这些 media 查询曾对应不同 iPhone 屏幕,但 Safari 从 iOS 8 起停止解析 rel="apple-touch-startup-image",现在连警告都不报——静默失效。
替代方案:用 CSS + JS 模拟启动图(有限但可控)
如果必须控制首屏视觉,唯一可行路径是:
- 在
内嵌一段极简 CSS,用:root或body设置背景色/图片,确保 HTML 解析即生效 - 把关键资源(字体、CSS)内联,避免 FOUC
- 用
DOMContentLoaded或load事件移除遮罩层,而不是等 React/Vue 挂载完成
例如:body { margin: 0; background: #fff url(splash.jpg) no-repeat center center; background-size: contain; } —— 这不是“启动图”,但能压住白屏时间,用户感知更稳。
真要还原原生体验,绕不开 PWA 安装流程和 iOS 对 WebKit 的限制;任何试图用 <link rel="apple-touch-startup-image"> 恢复旧行为的尝试,都会卡在第一步。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










