sizes属性在rel="icon"中被所有主流浏览器静默忽略,仅文件真实尺寸、type、声明顺序及manifest.json或media查询起作用;Windows任务栏只认ICO内48×48和256×256图层;iOS主屏图标必须用rel="apple-touch-icon"且至少180×180;Android PWA启动图仅读manifest.json的icons数组。

浏览器根本不读 sizes 属性,别白写了
你写的 sizes="192x192" 在 rel="icon" 场景下,Chrome、Firefox、Safari、Edge 全部静默忽略——不报错,也不据此选图。它只是个标注,不是指令。浏览器只认文件头里真实的像素尺寸,而不是这个字符串。
真正起作用的是:href 指向的文件物理尺寸、type 类型、声明顺序,以及是否配合 manifest.json 或 media 查询。
-
sizes值必须是精确小写格式,比如"32x32";写成"32×32"(中文乘号)、"32px"、"32"都会被跳过 - 漏掉
type属性?某些浏览器直接忽略整条<link> - 写了
sizes="16x16"但文件其实是 64×64 PNG?浏览器仍按 64×64 解析,可能模糊
Windows 任务栏图标只认 ICO 里的 48×48 和 256×256 图层
Chrome/Edge/Firefox 在 Windows 上显示任务栏图标时,完全不看 PNG 的 sizes,也不管你声明了 favicon-192x192.png。它只从 .ico 文件中提取对应图层。
如果你的 favicon.ico 里没塞进 48×48 和 256×256 这两个尺寸,任务栏图标大概率模糊、拉伸,或 fallback 到浏览器默认图标。
- 用在线工具生成 ICO 时,必须勾选 “48×48” 和 “256×256”,不能只导出 16×16/32×32
- 本地用 ImageMagick:执行
convert icon-256.png icon-48.png icon-32.png icon-16.png favicon.ico - 别指望
<link rel="icon" type="image/png" sizes="256x256" href="/icon-256.png">能替代 ICO —— Windows WebView2 和旧版 Edge 会直接忽略
iOS 主屏图标必须单独用 rel="apple-touch-icon"
Safari 完全不读 rel="icon",哪怕你写了十行 PNG,长按「添加到主屏幕」时也只会 fallback 到截屏或缩放 favicon.ico,结果通常是严重失真。
必须显式声明 rel="apple-touch-icon",且文件需满足硬性要求:
- 尺寸至少 180×180(iPhone X 及以后机型默认使用),推荐统一用
apple-touch-icon-180x180.png - 纯色背景、无透明边距;iOS 会自动加圆角和阴影,别自己加
- 路径必须是绝对路径,相对路径在子页面下极易 404
-
sizes属性在这里才被 Safari 实际读取,但 iOS 实际只读一个,写不写影响不大,稳妥起见可省略
Android PWA 启动图只读 manifest.json,HTML 里的 <link> 不生效
哪怕你在 <head> 里写了 <link rel="icon" type="image/png" sizes="192x192" href="/icon-192.png">,只要 manifest.json 的 icons 数组没配好,安装后启动图就是灰色块,桌面快捷方式图标也糊成一团。
HTML 中的 <link> 对 Android PWA 图标链没有 fallback 作用。
-
manifest.json的icons至少要包含"192x192"和"512x512"两项,sizes字段值必须是字符串(如"192x192"),不是数字或带单位 -
href是相对于 manifest 文件的路径,推荐全用绝对路径,比如"/icons/icon-192.png" - HTML 中仍需保留那条
<link>—— 它对桌面浏览器、标签页图标有效,只是对 PWA 启动图无效
favicon.ico(Windows + 兜底)、<link rel="icon">(桌面浏览器 + macOS Dock)、<link rel="apple-touch-icon">(iOS)、manifest.json(Android PWA),缺一不可。

















