2020年杀手级解决方案
这个解决方案必然是在最初提出这个问题九年后提出的,因为直到最近,大多数浏览器还不能处理.svg
格式的网站图标。
现在已经不是这样了。
请参阅:https : //caniuse.com/#feat=link-icon-svg
1) 选择 SVG 作为 Favicon 格式
现在,在 2020 年 6 月,这些浏览器可以处理SVG Favicon:
- 铬合金
- 火狐
- 边缘
- 歌剧
- 安卓版 Chrome
- KaiOS浏览器
请注意,这些浏览器仍然不能:
尽管如此,考虑到上述情况,我们现在可以以合理的信心使用SVG Favicon。
2) 将 SVG 显示为数据 URL
这里的主要目标是避免 HTTP 请求。
正如此页面上的其他解决方案所提到的,一个非常聪明的方法是使用Data URL而不是HTTP URL。
SVG(尤其是小型 SVG)非常适合 Data URL,因为后者只是纯文本(带有任何潜在的歧义字符百分比编码),而前者是 XML,可以写成一长行纯文本(带有少量百分比代码)非常简单。
3)整个SVG 是一个单独的 Emoji
注意这一步是可选的。您的 SVG可以是单个表情符号,但也可以很容易地成为更复杂的 SVG。
2019 年 12 月,Leandro Linares是第一个意识到自从 Chrome 加入 Firefox 支持 SVG Favicon 以来,值得尝试看看是否可以从表情符号中创建一个 favicon:
https://lean8086.com/articles/using-an-emoji-as-favicon-with-svg/
利纳雷斯的预感是对的。
几个月后(2020 年 3 月),Code Pirate Lea Verou意识到了同样的事情:
https://twitter.com/leaverou/status/1241619866475474946
收藏夹图标再也不会一样了。
4)自己实施解决方案:
这是一个简单的 SVG:
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 16 16">
<text x="0" y="14">🦄</text>
</svg>
这是与数据 URL相同的 SVG :
data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2016%2016'%3E%3Ctext%20x='0'%20y='14'%3E🦄%3C/text%3E%3C/svg%3E
最后,这是作为 Favicon 的数据 URL:
<link rel="icon" href="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2016%2016'%3E%3Ctext%20x='0'%20y='14'%3E🦄%3C/text%3E%3C/svg%3E" type="image/svg+xml" />
5)更多技巧(......这些不是你父母的收藏夹!)
由于 Favicon 是 SVG,因此可以对其应用任意数量的滤镜效果(SVG 和 CSS)。
例如,除了上面的白色独角兽图标,我们可以通过应用过滤器轻松制作黑色独角兽图标:
style="filter: invert(100%);"
黑色独角兽图标:
<link rel="icon" href="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2016%2016'%3E%3Ctext%20x='0'%20y='14'%20style='filter:%20invert(100%);'%3E🦄%3C/text%3E%3C/svg%3E" type="image/svg+xml" />