以下是 Philippe Bernard 的客座文章。 Philippe 研究了创建网站图标(以及所有相关的图形和标记)以确保在所有地方获得最佳质量输出所需的操作。剧透警告:这需要很多不同的图形和标记。此外,需要完全披露:Philippe 创建了一个工具来帮助使用它,他在本文中展示了该工具。
网站图标于 1999 年由 Internet Explorer 5 引入 (参考),并在几个月后由 W3C 标准化。它们是代表网站的小型图形。

从那时起,大多数桌面浏览器都遵循了这一趋势,并在某种程度上使用了网站图标。 这是一项轻松的工作,不是吗? 只需创建一个小图片添加到任何 Web 项目中,使其“最终完成”。 没什么特别的。 还是?
让我们来做个测验!
主要网站图标文件是什么?
答案:favicon.ico
。 为了确保:这不是将 PNG 重命名为 favicon.ico
。 尽管某些浏览器非常宽松,可以原谅此错误,但 ICO 是一种不同的格式,它支持图像的多个版本。
favicon.ico
的尺寸应该是什么?
问题:- A: 16×16。 标准尺寸。
- B: 32×32。 网站图标不是很久以前更新了吗?
- C: 64×64。 你知道,有了所有这些新的高像素密度屏幕。
- D: 以上都不是.
答案:D。
favicon.ico
是一种最初由 Microsoft 设计的格式,其他供应商都采用了这种格式。 Microsoft 建议 使用 16×16、32×32 和 48×48。是的,单个 ICO 文件可以包含多个图形。
桌面浏览器通常在选项卡中使用网站图标,在标准分辨率显示屏上,16×16 版本就足够了

但 16×16 图标对于其他位置来说太小了:任务栏和桌面。


只要图标包含多个图片,结果就会好很多。


favicon.png
的目的是什么?
问题:深入研究该主题时,我们经常会遇到另一个文件,favicon.png
。人们一直有关于它的问题 一直以来。 它到底是什么?
- A: 针对不支持
favicon.ico
的浏览器的图标。 比如 Firefox? - B: 高分辨率图标。 你知道,有了所有这些新的高像素密度显示屏。
- C: 过去遗留下来的东西。 现在有现代图标,比如 Apple Touch 图标。
- D: 答案 D。 很复杂。
答案:D。 自 HTML5 采用以来,favicon.ico
并不是非常有用。引入了 sizes
属性来指定同一图标的多个不同版本,这些版本可以是 PNG 文件
<link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16">
<link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96">
那么我们应该声明什么呢?
让我们面对一个令人不满意的事实。尽管所有桌面浏览器都支持 favicon.ico
,但此文件大多已弃用。是的,你仍然可以依赖此文件,它将按预期工作。但说真的,这是一种旧的已弃用格式。它在 Web 技术中其他地方都没有使用。PNG 更加一致。
favicon.ico
用于旧版本的 IE。对于其他浏览器和 IE 的最新版本,我们使用 PNG 图标。那么,我们应该声明哪些 sizes
? 我们很快就会介绍这一点。
问题:我们需要支持哪些格式的移动平台?
根据 SmartInsights,超过 26% 的 Web 流量来自智能手机和平板电脑。 这是未来。 你需要做些什么来支持这个世界?
- A:
favicon.ico
。 15 年前有效,现在也应该有效。 - B: PNG 图标。 你说你会介绍这一点。
- C: Apple Touch 图标。 当然。
- D: 正确答案从不列出。
答案:D。你需要 PNG 图标。 和 Apple Touch 图标。 和 Windows 8 磁贴图形。 和 一个名为 browserconfig.xml
的文件。
移动平台比经典的桌面浏览器更加异构。屏幕尺寸和分辨率差异很大,并且没有像 Internet 开始传播时 Windows 那样的主要操作系统。结果:不要指望使用单个通用图形和 HTML 代码中的单个通用声明来设计移动网站图标。
问题:PNG 图标的尺寸应该是什么?
- A: 96×96 用于 Google TV
- B: 196×196 用于 Android Chrome
- C: 228×228 用于 Opera 的 Coast
- D: 以上所有
答案:D,以及更多。 比如用于旧版本 Opera Speed Dial(已不再使用)的 160×160 图片,或者用于 Chrome 网上应用店 的 128×128 图标,这实际上取决于你要支持的平台。
问题:Apple Touch 图标的尺寸是多少?
Apple Touch 图标用于 iOS 设备的书签和“添加到主屏幕”的网站。 如果你的答案是 57×57,恭喜你。这是正确的。嗯,7 年前,第一部 iPhone 发布的时候是正确的。
答案:高达 180×180。
自第一部 iPhone 诞生以来,已经发布了三次。
- iPad。它的屏幕比 iPhone 大很多。
- 视网膜屏幕。它将原始屏幕的像素密度提高一倍。
- iOS 7。其扁平化风格使 iPhone/iPad 的外观略有不同。
总共有九种组合
设备 | 屏幕 | iOS 版本 | 图标尺寸 |
---|---|---|---|
iPhone | 经典 | 6 及更早版本 | 57×57 |
7 | 60×60 | ||
视网膜 | 6 及更早版本 | 114×114 | |
7 | 120×120 | ||
6 Plus | 8 及更高版本 | 180×180 | |
iPad | 经典 | 6 及更早版本 | 72×72 |
7 | 76×76 | ||
视网膜 | 6 及更早版本 | 144×144 | |
7 | 152×152 |


如果你没有正确答案,别怪自己。在拥有 apple-touch-icon.png
的 5,000 个顶级网站中,只有不到 4% 做对了。
有些人可能会争辩说,9 个图形不是必需的。 但至少,你的主 Apple Touch 图标应该是 152×152。 运行 iOS 7 的视网膜 iPad 将找到它需要的内容,而较小的设备可以根据需要缩小图片尺寸。
问题:是否需要在 HTML 中声明 Apple Touch 图标?
- A: 我不知道。 得了吧,你总得回答点什么吧!
- B: 是的。 否则 iOS 如何找到它们?
- C: 否。 Apple 定义了约定,以便 iOS 设备能够始终找到它们。
- D: 否,但……
答案:D… 但由于某些其他平台也使用 Apple Touch 图标,因此无论如何声明它是比较安全的。
<link rel="apple-touch-icon" sizes="57x57" href="/apple-touch-icon-57x57.png">
<link rel="apple-touch-icon" sizes="114x114" href="/apple-touch-icon-114x114.png">
<link rel="apple-touch-icon" sizes="72x72" href="/apple-touch-icon-72x72.png">
<link rel="apple-touch-icon" sizes="144x144" href="/apple-touch-icon-144x144.png">
<link rel="apple-touch-icon" sizes="60x60" href="/apple-touch-icon-60x60.png">
<link rel="apple-touch-icon" sizes="120x120" href="/apple-touch-icon-120x120.png">
<link rel="apple-touch-icon" sizes="76x76" href="/apple-touch-icon-76x76.png">
<link rel="apple-touch-icon" sizes="152x152" href="/apple-touch-icon-152x152.png">
听起来很奇怪,但 iOS 设备并不是唯一寻找 Apple Touch 图标的设备。由于这些图标很流行,而且比高分辨率 PNG 图标更常见,因此某些浏览器(比如 Android Chrome)也在使用它们。 因此,声明它们比较安全,以防兼容设备或浏览器的访问者能够处理其中一个图标。
问题:定义 Windows 8 平板电脑磁贴需要什么?
- A:Windows 8 平板电脑?这是什么?
- B:
favicon.ico
。史蒂夫·鲍尔默的遗产。 - C:两个
msapplication-TileColor
和msapplication-TileImage
元标签。 - D:
browserconfig.xml
.
答案:对于 Windows 8.0 和 IE 10 来说是 C,对于 Windows 8.1 和 IE 11 来说是 D。答案 A 在某种程度上也是正确的。
Windows 8.0 声明通常如下所示
<meta name="msapplication-TileColor" content="#2b5797">
<meta name="msapplication-TileImage" content="/mstile-144x144.png">
Windows 8.1 和 IE 11 依赖于在browserconfig.xml
中声明的多个磁贴图片。例如
<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
<msapplication>
<tile>
<square70x70logo src="/mstile-70x70.png"/>
<square150x150logo src="/mstile-150x150.png"/>
<square310x310logo src="/mstile-310x310.png"/>
<wide310x150logo src="/mstile-310x150.png"/>
<TileColor>#2b5797</TileColor>
</tile>
</msapplication>
</browserconfig>
新的 Metro UI 带有一套新的指南,例如大多数内置应用使用的“白色剪影”。

square150x150logo
磁贴图片的大小是多少?
问题:- A:150×150。 你不会读吗?
- B:其他尺寸。
答案:B,270×270。 微软建议使用更大的尺寸 以支持高密度屏幕。
恭喜,你完成了测验!你表现如何?
这些问题旨在说明这个主题的复杂性,尽管它看起来很简单。favicon.ico
只是一个 favicon.ico
文件的时代已经过去了。但是旧的习惯仍然存在,导致了荒谬的情况。我们可以花几天时间设计一个超级整洁的自适应设计,但只放置一个 57×57 的 Apple Touch 图标,只适合现在几乎不使用的旧设备。
移动时代的 favicon 生成器
在 2014 年,创建多平台 favicon 是一项复杂的任务,很难做到完美。当然,你可以使用 favicon.ico
,一个 32×32 的 PNG 图标和一个 152×152 的 apple-touch-icon.png
在你的网站根目录下获得一个不错的效果。但是,完成这项工作可能需要十几个图片。除非我们在一个预算充足的大型项目上工作,否则我们通常没有那么多时间花在这个小任务上。
作为 RealFaviconGenerator 的作者,让我给你一个明智的建议:使用 RealFaviconGenerator。与其他常见的 favicon 生成器不同,它满足了两种需求。
不同的平台涉及不同的 UI。虽然它肯定不是 Photoshop 的在线版本,但 RealFaviconGenerator 提供了一些设置来设计针对各种平台的不错图标。例如,iOS 的不透明背景(苹果不允许使用透明图标)或 Windows 8 的白色剪影。

生成所有你需要覆盖主要平台的图片和 HTML 代码:PC/Mac、iOS、Android、Windows 8 等。 生成的图片和代码经过了广泛的测试,以确保该服务能够兑现承诺。

例如,通过提交一个高分辨率图标,我能够在几次点击中生成这组图标。

现在它和 10 年前一样容易:制作一个图形,5 分钟后你就可以使用你的最新 favicon。
我很确定 Firefox 支持 .ico 文件;我在我的网站上使用它们很多年了,并且一直能够在使用 FF(我的主要浏览器)时看到 favicon。
我可以确认它确实支持。如果你提供 FF 一个 favicon.ico 图标和不同的 PNG 图标,它会优先使用 32×32 的 PNG 图片。但是 favicon.ico 仍然是一个很好的后备解决方案。
所有这些 favicon 的混乱真是荒谬。应该只有一种方法访问图标——浏览器会处理剩下的事情。
同意,让我们明确一点,这不仅仅是 favicon 的问题,当你需要为苹果触控创建相同或类似的东西时也会出现这种情况。我花太多时间来跟上这些变化了。我用来记录这些内容的个人电子表格处于持续变化之中。我会添加像这篇文章中的信息,当它变得可用时,但我无法确定当我明天引用它时它是否仍然是最新的。当你为各种社交媒体添加图标或图像时,这简直就是一场噩梦。
我同意。
当你想到它的时候,真的很荒谬。
议案通过。
情况恰恰相反。IE 引入了 favicons 作为一项专有功能,由于其他浏览器也想效仿,它最终在同年晚些时候被标准化。
该死!我自己的测验都做错了!:(
完美,这正是我要找的!谢谢,克里斯!
好文章。我几乎正在研究这方面的内容。先生,你为我节省了大量时间!
你构建了一个很棒的工具!
非常感谢!
谢谢!:)
今天我学到了很多东西!感谢客座文章,我很快就会使用这个生成器。
嗯,我仍然对所需的格式数量持怀疑态度。
我不明白为什么需要这么多 PNG,因为据我所知,所有浏览器都接受 ICO 作为格式,并会选择 ICO 中首选的大小。
另外,据我所知,所有设备都会使用 apple-touch-icon,然后将其缩放到其他设备上。
当然,如果你能指出我哪里错了,请告诉我,因为在 favicon 等等方面总是存在相互矛盾的帖子。
不过,这是一篇很棒的文章 :)
除非你真的非常想让你的图标完美,并且想要所有尺寸(因此你不只是使用自动生成器,这违背了目的),否则你只需要两个
favicon.ico:一个 32×32 的 png 文件,带有 .ico 扩展名,在 16×16 时看起来不错。你甚至不需要在 html 中引用它,浏览器会自动在根目录中查找它,也就是:http://www.example.com/favicon.ico
一个 152×152 的 png 文件,被引用为
<link rel="apple-touch-icon" href="/icon.png">
没有必要用那么多代码来污染每一个请求。
当然,你总是可以将多个图像(否则是不同的图像)放到 ICO 文件中。这样就使所有单独的 PNG 请求变得无用。(可以肯定的是,所有浏览器都使用 ICO 文件)。
我知道一些浏览器(不确定是否所有)都会在根目录中查找 favicon。但是,我认为你最好还是包含指向它的链接。
谢谢!
是的,这有很多代码和图片。favicon.ico + apple-touch-icon.png 组合可以很好地完成工作。然后,这取决于我们想要支持多少个平台以及我们想要“多好”地支持它们。例如,有人曾经告诉我,他想使用最近邻算法缩小他的图标(它是像素艺术;由常规缩放算法(例如 Mitchell)添加的模糊效果不适合)。如果他只提供了一个 152×152 的图标给 iPhone,那么结果可能与预期结果不同。在这种情况下,在设计时缩小图标并为各种设备提供所有版本是有意义的。是的,这是一个棘手的用例!
当我看到如今让图标正确显示的复杂程度时……我不禁想到“这真是胡说八道”。
这不是那些 SVG 可以为我们节省很多麻烦的案例之一吗?
说真的,这比它需要的复杂多了。
这应该涵盖所有内容(但实际上没有)。
<link rel="icon" type="image/svg" sizes="any" href="favicon.svg"/>
5 年后再见 :)
你总是能在需要的时候写出这些文章!很棒的帖子!
我还发现了一个很棒的 grunt 任务来自动化这个乱七八糟的东西:https://github.com/gleero/grunt-favicons
生活现在变得简单多了…
我过去用过你的工具。很高兴知道它确实不错!
H5BP 已经停止使用那么多图标了… 我觉得这很有道理。使用那么多文件真的值得吗?它会把你的根目录搞得乱七八糟。
谢谢!
是的,我承认当我在自己的 HTML 中复制粘贴生成的代码时,我并不完全满意。 那么多类似的行。我的内心告诉我一定有更好的方法。
我会尝试减少代码和图片的数量。但这将需要大量的测试以确保兼容性和质量不受影响。所以这不会很快准备好…
很棒的帖子 – 很棒的工具!
谢谢!!
rel=icon href=gnome.svg sizes=any type="image/svg+xml"
适用于任何尺寸。规格http://www.w3.org/TR/html5/links.html#attr-link-sizes-any
状态
* Chrome https://code.google.com/p/chromium/issues/detail?id=294179
* Webkit https://bugs.webkit.org/show_bug.cgi?id=136059
* Firefox https://bugzilla.mozilla.org/show_bug.cgi?id=366324
* IE https://connect.microsoft.com/IE/feedback/details/782416/svg-favicon-support(已关闭,不会修复)
Favicons 是当今互联网上最被低估的东西。如果你关注 psychologytoday 博客,你会知道 Favicons 也在跳出率和转化率中发挥作用。
是的,favicon 被低估了,很明显。作为一名开发者,我更担心技术上的低估(web 开发人员/设计师忽视了它),而不是心理上的低估。但我毫不怀疑一个漂亮的 Apple Touch 图标可以提高网站的“添加到主屏幕”率。
我从来没有真正关注过 favicons – 我会做一些工作,如果我能在自己的设备上看到它,我就会把它放在一边。看来这件事要复杂得多,我以后会尝试使用你的建议。
很棒的帖子!:)
谢谢!
我认为这是浏览器的一个无用功能。我完全同意你的看法 Chris
afaik 你并不一定需要 browserconfig.xml 用于 Windows 8 磁贴 – 据 buildmypinnedsite.com 所说,你可以将该信息作为常规 meta 标签添加
我认为你只需要它,如果你想让它成为一个实时磁贴,从 RSS 订阅源拉取数据。顺便说一句,这些磁贴现在也适用于 Windows Phone 8.1 上的 IE11。
没错,磁贴声明可以内嵌在 HTML 代码中。但是,我认为将它们放在 browserconfig.xml 文件中是一个好习惯。由于大多数访客不使用 Windows 8 RT,将磁贴放在外部文件中有助于节省 HTML 中的几个字节。并使其更易读。
他们都需要支持 SVG 并结束它。
如果不是在每个平台上显示不同,它就不是 web 开发。
停止这种疯狂!
每个人都使用 SVG 图标!!!
我更像是一个程序员而不是设计师,但我认为这篇文章真的很有趣。我还没有意识到这是一个如此复杂的话题。谢谢。
我发现最好的 OS X 图标制作应用程序,毫无疑问,是 Icon Slate。它将构建一个包含所有 favicon 大小的单件 ICO 文件,最大尺寸为 256×256,如果你想保留手绘的 16×16 favicons,只需将它们拖到 16×16 的方块上。对于 webclip 图标,它甚至会添加圆角,如果你想要 iOS 6 或 iOS 7!而且所有这些不同的 webclip 尺寸都是不必要的。当 Retina 显示屏首次推出时,我尝试将我的图标制作成 512×512,它们会自动为低分辨率屏幕调整大小,甚至在 Android 上也是如此。1024×1024 也能用,但有点过分了… 至少目前是这样。
我不久前研究过 favicons,我为我的网站想出了以下代码,在我的经验中,它似乎效果很好。
我写了一个关于这个主题的StackOverflow 答案,其中包含更多详细信息。
但是我还有一个问题。我必须为 Windows 8.1 和 IE 11+ 使用 XML 文件才能使用磁贴,还是它会使用“旧”代码?
关于 Windows 8.1:你仍然可以使用在 HTML 代码中声明的“旧”144×144 磁贴图片。有两个(很小的)缺点
你的访客只能选择一个中等大小的方形磁贴。但没有小方形磁贴、大方形磁贴和矩形磁贴。
正如微软推荐使用更大的图片(例如,用于 square310x310logo 的 558×558)以支持高密度屏幕,你可以预期“旧”的 144×144 图片对于某些屏幕来说太小了。但是,这样的设备已经存在了吗?我真的不知道。
还要注意browserconfig.xml 的磁贴声明可以内嵌在 HTML 代码中。所以你不必生成另一个文件,尽管我建议这样做。
嘿 Chris,感谢你发表这篇很棒的帖子。我喜欢它,现在我知道如何处理所有类型的 Favicons….
非常有用的资源。感谢你发布这篇详细的帖子。
谢谢!
我想知道浏览器(至少大部分,尤其是移动浏览器)是否被指示获取“正确”的文件,或者所有这些都引入了痛苦的请求…
是的,移动浏览器足够智能,可以只选择最佳图标。
为什么他们不能简单地支持 SVG,类似于
favicon.svg
,它适用于所有分辨率、密度、几乎所有东西。但是没有…没有…他们做不到。这让我感到很悲伤。SVG 显然是解决 favicon 问题的技术解决方案。然而,一个问题仍然存在:不同的设计指南。例如,经典的 favicon 经常使用透明度,而 iOS 禁止触摸图标使用透明度。事情永远不会简单,永远不会!!:)
愚蠢的评论系统,不能回复你的答案。尽管如此,这些都是由专有的赚钱机器制定的愚蠢的设计规则,这么多完全的白痴继续崇拜它,却没有明显的原因。唯一重要的是免费的 web 世界在这里要说的话,这很简单:允许透明度!给开发人员和设计师自由去做他们想做的事。
我当然不关心别人的设计规则。当然,每个开发人员或设计师都可以通过简单地不使用透明度来轻松处理这些边缘情况,因为他们想要支持时尚的硬件,好吧,那就去做吧。:)
http://realfavicongenerator.net/ 不再起作用,尝试了几次都失败了。
哦 :-/ 现在它正在工作。你还有问题吗?在你这边也正常吗?
关于 favicons 的超级概述。感谢你。
来自柏林的欢呼
Windows 8.1 实际上支持 4 种不同的磁贴大小,可惜的是 favicon 生成器没有做到这一点。
http://www.buildmypinnedsite.com/
没错!生成器确实生成了它们,但它只允许你设计经典的“中等方形”图标,并根据它生成其他图标。
有一个关于这个问题的工单(https://github.com/RealFaviconGenerator/realfavicongenerator/issues/16),但我承认在做这件事之前我还有一堆事情要做…
感谢你的链接!我知道微软有这个工具,但我找不到它了。
很棒的文章 :)
谢谢
谢谢!
感谢你分享,这在越来越复杂的现状中非常有帮助。我认为我们必须接受浏览器永远不会步调一致,所以我们需要依赖像这样的工具。感谢你花时间写这篇文章,内容丰富且有趣!
谢谢!!
有人应该为创建所有这些图标编写一个 Grunt/Gulp 任务。
我计划在接下来的几个月内完成。首先,需要更新 API(http://realfavicongenerator.net/api),因为它被设计用于交互式场景。
我很高兴地知道有些人对 Grunt 插件真的感兴趣!:)
A:Windows 8 平板电脑?这是什么?
事实上,这比你后来讽刺的言论更真实,因为 browserconfig 不仅用于平板电脑,还用于任何将 IE 设为默认浏览器的 Windows 8/8.1 系统(是的,这会引来一些喷子……)。这可能是平板电脑、像 Yoga 这样的混合设备,或者所有将 IE 设为默认浏览器的台式机,因为人们可能会将书签固定到他们的开始屏幕(顺便说一句,这对于你自己的公司来说是一个不错的功能)。
所以,即使大多数开发者不会将 IE 设为默认浏览器,许多人可能会这样做,因此为所有这些情况添加对图标的支持是一件好事。
我同意 Tracey Rickard 的观点:“感谢你分享,这在越来越复杂的现状中非常有帮助。我认为我们必须接受浏览器永远不会步调一致,所以我们需要依赖像这样的工具。感谢你花时间写这篇文章,内容丰富且有趣!”
所以,我现在需要更多时间来设计 我的网站 的 logo,以便创建你在文章中提到的所有东西。
很棒的文章,谢谢 :)
谢谢!
试试生成器,你一定会节省时间的 :)
查看这篇文章,了解更精简的解决方案:http://www.jonathantneal.com/blog/understand-the-favicon/
对于如此微不足道的事情来说,这种标记量实在太多了。
叹气如果有一种图像文件格式支持不同的尺寸,那么我们只需要包含一个声明…哦,等等,有,favicon.ico!哦,但是它已经过时了。该死!讽刺
我真的希望 PNG 格式(以及 JPEG 格式)可以扩展为在一个文件中包含多个图像,就像 Adobe Firework 的专有 PNG 格式一样。这样就可以在一个文件中创建所有分辨率的图像,然后如果新的设备需要另一个尺寸,它就可以直接选择最接近的尺寸。我们只能希望。
至少,多个 PNG 图片带来一个优势:浏览器可以选择它需要的图片。例如,Win8/FF 下载 32×32 的 PNG 图标(我的只有 632 字节),而不是 196×196 的图标(在我的情况下是 4KB)。这不算什么大问题,但 favicon 并不是人们愿意浪费带宽的领域。
在此过程中浪费了移动带宽…但没错,那样会容易得多。
哇,这篇文章非常棒。我自己也弄清楚了一些东西,但之前没有考虑过所有这些。
谢谢!:)
当你解决了这个丛林问题之后,再添加 Facebook、Twitter 和 Pinterest 的图形。别忘了 Google+,并确保与 browserconfig.xml 兼容。另外:添加一个 cache.manifest,以确保即使用户在移动连接不佳的情况下再次访问时也能快速加载,至少缓存你使用的嵌入式 Web 字体。哦,我有没有提到网站必须在 200 毫秒内加载完成?
我要走了…
是的,还有很长的路要走…:-/
哇,在这个话题上很难得到一个明确的答案。这篇文章对整个事情进行了精彩、清晰且组织良好的概述。很棒的资源。付出了巨大的努力,非常感谢。:-)
谢谢!
请删除我之前的评论(代码没有显示)
这是我精简的解决方案。
4-8kb 的图标对于浏览器下载(并在需要时调整大小)来说是完全可以的。
真的没有必要创建这么多的文件和变体。
<link rel=”icon” type=”image/png” href=”favicon.png” />
<!–[if IE]><link rel=”shortcut icon” type=”image/x-icon” href=”favicon.ico”><![endif]–>
<link rel=”apple-touch-icon” href=”apple-touch-icon.png” />
<meta name=”msapplication-TileColor” content=”#111111″ />
<meta name=”msapplication-TileImage” content=”mstile.png” />
favicon.png 是 96×96
favicon.ico 是使用 RealFaviconGenerator 制作的(我假设它包含 3 个不同的尺寸)
apple-touch-icon.png 是 152×152
mstile.png 是 144×144
http://jsfiddle.net/nqf7hhjj/1/
享受
很棒的文章,它强调了需要覆盖如此多的基础的问题。这么多额外请求的影响可能弊大于利。
谢谢!
性能影响有限。基本上,浏览器加载它们需要的内容。例如,参见 http://stackoverflow.com/questions/24931632/are-apple-touch-icons-always-loaded-by-the-browser/24953671。即使 Chrome 和 FF 在 favicon 选择方面存在已知问题,但据报道,这些问题在最近的版本中得到了修复(或至少有所改善)。
在标题中声明 8(八个!)个 favicon 是非常糟糕的做法!而且这仅仅是为了 Apple touch?!
我喜欢 browserconfig.xml 方法,它更优雅。如果只有更多的浏览器使用它就好了!
但是,如果你在 browserconfig.xml 中声明了 favicon,为什么不在 CSS 中声明,为什么不在 JS 中声明,为什么不在 Open Graph 数据中声明,或者为什么 Open Graph 没有 opengraph.xml…只是说一下 :-/ 真是噩梦!
我认为,为了示例的目的,你可以只使用 iPhone 和 iPad 的 iOS8 尺寸,忽略其他尺寸,因为它们在一两年内就会过时。
恭喜!你刚刚写了下一本关于 favicon 的 A Book Apart 书籍。
嗯哼,谢谢!;)
非常感谢。我真的很喜欢你对当前 favicon 状况的深入分析。天哪!你的工具很棒,我已经把它保存起来,以便将来在网站上使用它。谢谢!
谢谢 C :)
我考试不及格。我想我太落伍了,停留在 2009 年了!
这篇文章真的很启发人,Philipe。谢谢!
我同意其他所有人的观点,这对于如此简单的事情来说,代码量太多了。需要从这团糟中发展出一种新的标准。
与此同时,感谢您让我了解了在这个2014年多平台、多浏览器、多屏幕尺寸的世界中需要什么。
感谢您的反馈!不客气!
我简直不敢相信,我需要17行代码加上大约20个文件才能在我的网站上拥有正确的favicon...
您不需要。
Mowgly 说的没错。“许多行,许多文件”在它们自动为您生成时是可以接受的。但如果您手动创建它们,您可以大幅减少这些数字。例如,您只需定义一个 152×152 的 Apple touch 图标,然后让各种设备自行缩小图片。
好文章。我一直使用 Real Favicon Generator。这是一项很棒的服务。为创建者点赞 :-)
谢谢 :-)
请删除我之前的评论(代码没有显示)
很棒的帖子,非常感谢!
我关于代码中 favicon 链接顺序有一些有趣的观察。
问题是我们的 logo 在任何转换中看起来都很糟糕,所以我们为 16×16 设置了单独的 favicon。但是当我生成 favicon 并用我的 favicon 替换 16×16 favicon 时,我发现了一个 bug。
在 FF 和 IE 浏览器中显示了大小为 16×16 的 favicon,但它似乎获取了另一个更大的 favicon 并尝试将其转换为 16×16。Chrome 中没有这样的 bug。
所以,原始代码如下所示
我尝试了一些小的更改,这个 bug 通过这段代码得到了修复
16×16 的 favicon 应该是最后一个。只有在这种情况下,FF 和 IE 才真正使用 favicon-16×16.png 而不是尝试将 favicon-32×32.png 转换为 16×16 大小。
您是否对此有任何信息,以及为什么在您的生成器中 16×16 的 favicon 不是最后一个,而最后一个是 32×32。这样做有什么意义吗?
抱歉,我无法删除评论 :-/
通常情况下,浏览器自动缩放图标不会出现问题。您的图片有什么特别之处吗?它是像素艺术还是其他东西(需要锐利边缘,而不是大多数调整大小算法产生的模糊特征)?
显然,IE 11 会获取它能找到的最大的 PNG 图标。对于 RFG,它是用于 Android Chrome 的 192×192 图标。这不是一个好的策略,尤其是在有其他不需要重新缩放的较小图标时。恐怕没有好的解决方法(除了删除所有图标,只提供 16×16 图标)。
Firefox 不支持“sizes”属性 (https://bugzilla.mozilla.org/show_bug.cgi?id=751712) 所以
它会加载所有图标。很好。
它会获取最后一个图标。
32×32 被声明为最后一个是为了确保 FF 有一个足够大的图标用于高分辨率屏幕(例如 iMac)。两种可能的解决方法
正如您所建议的,您可以交换行以将 16×16 图标声明为最后一个。您应该获得一个高分辨率的 Max OS 设备来确保结果在这样的平台上是正常的。
您可以确保 32×32 是“完美的”(您可以像处理 16×16 图标一样手动绘制它,或者使用 RFG 提供的缩放算法)并确保 FF 在缩放它时不会损坏它太多。
希望这些能有所帮助。