我一直都很感激有人能够深入研究并重新评估某些东西的最佳实践,这些东西实际上每个网站都需要,并且有一套复杂的要求。Andrey Sitnik 已 在这里针对 favicon 做了这件事。
最终建议
<link rel="icon" href="/favicon.ico" sizes="any"><!-- 32×32 -->
<link rel="icon" href="/icon.svg" type="image/svg+xml">
<link rel="apple-touch-icon" href="/apple-touch-icon.png"><!-- 180×180 -->
<link rel="manifest" href="/manifest.webmanifest">
{
"icons": [
{ "src": "/192.png", "type": "image/png", "sizes": "192x192" },
{ "src": "/512.png", "type": "image/png", "sizes": "512x512" }
]
}
在 CSS-Tricks 上这样做时机正好,所以我尝试严格按照建议去做,到目前为止效果很好。我想我曾经对它的复杂性感到厌烦,以至于我采用了极简主义的方法,并且仅使用了 favicon.ico
文件。现在我已经将上述所有内容都设置到位了。
我的不同之处…
- 我没有安装 GIMP 或 Inkscape,它们可以导出
.ico
格式,所以我使用了 这个 favicon 生成器(我将我的“主”SVG 导入其中),仅用于那个图标。 - 我发现 Figma 对调整框架大小和导出正确尺寸很有帮助。
- 我使用 ImageOptim 优化所有图像。
- 我担心添加“清单”,因为我没有其他类似 PWA 的步骤,并且感觉像是为了微不足道的价值而额外发出一个网络请求。但无论如何我还是做了。
- 我有一个主题颜色 (
<meta name="theme-color" content="rgb(255, 122, 24)">
),因为 有人告诉我这是一个不错的点缀。感觉相关。
我喜欢暗模式 SVG 的概念
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 500 500">
<style>
@media (prefers-color-scheme: dark) {
.a { fill: #f0f0f0 }
}
</style>
<path class="a" fill="#0f0f0f" d="…" />
</svg>
但我在那里没有做任何花哨的事情,因为我认为我的图标无论如何看起来都很好,无需更改。

我还未来得及再次制作一个特殊的 仅限开发的 favicon,但我将会这样做,因为我发现它非常方便。
一种快速、轻量且安全的方法。
将 favicon.ico 和 apple-touch-icon.png 分别命名为这两个名称并放置在根服务器目录中可以节省一些元数据…
浏览器始终检查 favicon.ico,iOS 和 Android 设备也使用 apple-touch-icon.png 执行此操作。
我只是添加了主题元数据和一个 SVG 图标以及另一个专用于 Safari 的 SVG 图标。
就是这样!
如果使用清单,还建议使用新的遮罩图标,我尝试过,但最终停止使用清单,Chrome 设备/桌面如何处理它实在太奇怪了,它实际上只用于带有“网站作为应用程序”内容的启动画面。
我上次检查时,如果 apple-touch-icon.png 只是放在根目录下,那个愚蠢的 Lighthouse 会返回错误,但如果我声明它并在清单中使用专用图标,Chrome 就会使用…苹果图标覆盖它们。
法语有一句表达方式:mais de quoi je me mêle!
我用 iPad 写了这些,这真的很痛苦。:D
您知道如何在
这可以提高页面速度,通过在 WordPress 中预加载 favicon 吗?
在哪里可以找到有关如何填写 manifest.webmanifest 的信息?我发现 MDN 的帮助不大,但我对此很陌生。谢谢!
Lee Reamsnyder 有一篇 不错的后续文章,他在文章中纠正了 Andrey Sitnik 没有完全正确的地方。
Chris,我注意到您删除了 Andrey Sitnik 文章中为 favicon.ico 链接推荐的 size=”any” 属性。但这在您的“我的不同之处…”部分中没有提及。
这是故意的吗?
并非有意为之——我一定是错过了。我会把它加进去,并注意副作用。
精彩的文章!
如果您不知道,Masa Kudamatsu 在他的(同样精彩的)文章 “2021 年如何设置 Favicon”的权威版本 中引用了您。
它写得非常好,引用了许多来源。
最终方法与您在这里的方法非常相似。
绝对是我将在我的应用程序中使用的方法!
如果我们不关心 PWA 功能并且不包含清单文件和图标,我们会错过什么?我知道对于 Apple 设备,触摸图标用于“阅读列表”等功能,还有其他类似的好处吗?