Favicons-最佳做法


106

我正在努力寻找Favicons,Touch图标以及现在的Tile图标所需的所有这些不同大小和格式的信息。

我已经阅读了这篇文章:http : //www.jonathantneal.com/blog/understand-the-favicon, 但是我仍然对使用什么模糊不清,在所有设备和浏览器> = IE8上看起来都相当不错。

我认为我应该创建以下内容:

ICO
favicon.ico(32x32)

PNG
favicon.png(96x96)

平铺图标
tileicon.png(144x144)

基于此https://github.com/h5bp/html5-boilerplate/issues/1367的 Apple Touch图标
apple-touch-icon-precomposed.png(152x152)

...然后使用此代码为他们服务?

<link rel="apple-touch-icon" href="path/to/touchicon.png">
<link rel="icon" href="path/to/favicon.png">
<!--[if IE]><link rel="shortcut icon" href="path/to/favicon.ico"><![endif]-->
<!-- or, set /favicon.ico for IE10 win -->
<meta name="msapplication-TileColor" content="#D83434">
<meta name="msapplication-TileImage" content="path/to/tileicon.png">

我有什么想念的吗?

我不清楚这是否涵盖IE 10?


为了获得最佳答案,请访问Apple网站:Apple Developer
Ruub 2014年

1
撰写本文时,苹果网站尚不完整,缺少有关启动屏幕图像的信息,甚至还有更多信息。
Muhammad Rehan Saeed 2014年

哇-这里有很多细节。如果您想获得一个简洁快速的简单答案,请访问stackoverflow.com/a/45301651/661584可能会有帮助。感谢
MemeDeveloper

Answers:


114

Favicon比听起来更复杂。10年前,这favicon.ico是唯一需要的物品。然后是触摸图标,然后由于各种iOS设备屏幕分辨率而出现了多个触摸图标,然后是Windows的平铺图标...

这里的一些答案非常全面-令人不知所措(所有这些,仅用于收藏夹图标?)。但是,它们未能表明建议将Windows的310x310平铺图标推荐为558x558。而且由于它们是几个月前编写的,因此他们没有提及Android Chrome M39的最新清单OS X El Capitan上Safari固定选项卡SVG图标

每个平台的设计是另一个困难而又被忽略的话题。例如,收藏夹图标通常是透明的。但是iOS不支持透明性(例如,将SO触摸图标与将SO添加到iPhone主屏幕时得到的内容进行比较)。

由于这些原因,我认为favicon的最佳做法是手动创建它。相反,请使用工具来自动化整个过程并执行平台准则。

我建议你使用 RealFaviconGenerator。它会生成完成工作所需的所有图片和HTML代码:

  • favicon.ico 和用于桌面浏览器的PNG图标
  • 适用于iOS和Android设备的Apple Touch图标
  • Windows 8磁贴
  • OS X El Capitan上Safari的固定选项卡图标

例如,它不仅生成msapplication-TileImage图片和标记,还生成browserconfig.xml IE11支持的文件。它也在几个月前进行了更新,以支持Android Chrome清单和Safari OS X El Capitan。

完全披露:我是该网站的作者。


1
我刚刚使用了您的网站,非常好。当它不在根目录中时,您应该包括msapplication-config元标记:<meta name="msapplication-config" content="../path/to/browserconfig.xml">
Rick Davies

1
谢谢!关于browserconfig.xml的路径:它已经包含在生成的代码中,不是吗?
philippe_b

1
该文件已生成,但代码行未生成。我刚试过 谢谢您提供的优质服务。
user664833 2014年

1
@ user664833感谢您的反馈:)您的意思是声明browserconfig.xml的行?
philippe_b 2014年

3
这是有目的的。browserconfig.xml只要它在站点的根目录中就不需要声明。IE会自动寻找它。在其他情况下(当您在选项中输入特定路径时),将生成声明。
philippe_b 2014年

56

这是用于手机和平板电脑的favicon的完整示例(据我所知):

<!-- non-retina iPhone pre iOS 7 -->
<link rel="apple-touch-icon" href="icon57.png" sizes="57x57">
<!-- non-retina iPad pre iOS 7 -->
<link rel="apple-touch-icon" href="icon72.png" sizes="72x72">
<!-- non-retina iPad iOS 7 -->
<link rel="apple-touch-icon" href="icon76.png" sizes="76x76">
<!-- retina iPhone pre iOS 7 -->
<link rel="apple-touch-icon" href="icon114.png" sizes="114x114">
<!-- retina iPhone iOS 7 -->
<link rel="apple-touch-icon" href="icon120.png" sizes="120x120">
<!-- retina iPad pre iOS 7 -->
<link rel="apple-touch-icon" href="icon144.png" sizes="144x144">
<!-- retina iPad iOS 7 -->
<link rel="apple-touch-icon" href="icon152.png" sizes="152x152">
<!-- Win8 tile -->
<meta name="msapplication-TileImage" content="favicon-144.png">
<meta name="msapplication-TileColor" content="#B20099"/>
<meta name="application-name" content="name" />

<!-- IE11 tiles -->
<meta name="msapplication-square70x70logo" content="tile-tiny.png"/>
<meta name="msapplication-square150x150logo" content="tile-square.png"/>
<meta name="msapplication-wide310x150logo" content="tile-wide.png"/>
<meta name="msapplication-square310x310logo" content="tile-large.png"/>

对于IE11,是一个常见问题解答


2
太好了-IE11也有新功能!感谢您发布信息。
2013年

4
但这不包括“ apple-touch-icon-precomposed.png”和“ apple-touch-icon.png”
彼得

2
+1但是我不确定这是否是最佳实践,尽管它是彻底的。有关最佳实践(IMHO)和更实际方法的信息,请参阅下面的尼尔·罗伯森(Neil Robertson)建议的出色备忘单。
波阿斯

您是否有机会更新答案,使其也适用于6和6+?还是上面的代码应该工作?
Rvervuur​​t 2015年

看到我的答案stackoverflow.com/a/45301651/661584容易得多。可能有帮助。感谢
MemeDeveloper

25

您可以为各种设备设置许多不同的图标,甚至是启动屏幕。这个答案涉及如何全力支持他们。

以下是我使用的一些摘录,以及指向我收集信息的地方的相关链接。请参阅我的博客以获取有关ASP.NET MVC Boilerplate的更多信息和更多信息。项目模板的,所有这些内容均内置于其中(包括示例图像文件)。

将以下标记添加到您的html头中。注释掉的部分是完全可选的。虽然未注释的部分建议覆盖所有图标用法。不要害怕,大多数情况下都是可以帮助您的评论。

<!-- Icons & Platform Specific Settings - Favicon generator used to generate the icons below http://realfavicongenerator.net/ -->
<!-- shortcut icon - It is best to add this icon to the root of your site and only use this link element if you move it somewhere else. This file contains the following sizes 16x16, 32x32 and 48x48. -->
<!--<link rel="shortcut icon" href="favicon.ico">-->
<!-- favicon-96x96.png - For Google TV. -->
<link rel="icon" type="image/png" href="https://stackoverflow.com/content/images/favicon-96x96.png" sizes="96x96">
<!-- favicon-16x16.png - The classic favicon, displayed in the tabs. -->
<link rel="icon" type="image/png" href="https://stackoverflow.com/content/images/favicon-16x16.png" sizes="16x16">
<!-- favicon-32x32.png - For Safari on Mac OS. -->
<link rel="icon" type="image/png" href="https://stackoverflow.com/content/images/favicon-32x32.png" sizes="32x32">

<!-- Android/Chrome -->
<!-- manifest-json - The location of the browser configuration file. It contains locations of icon files, name of the application and default device screen orientation. Note that the name field is mandatory.
    https://developer.chrome.com/multidevice/android/installtohomescreen. -->
<link rel="manifest" href="https://stackoverflow.com/content/icons/manifest.json">
<!-- theme-color - The colour of the toolbar in Chrome M39+
    http://updates.html5rocks.com/2014/11/Support-for-theme-color-in-Chrome-39-for-Android -->
<meta name="theme-color" content="#1E1E1E">
<!-- favicon-192x192.png - For Android Chrome M36 to M38 this HTML is used. M39+ uses the manifest.json file. -->
<link rel="icon" type="image/png" href="https://stackoverflow.com/content/icons/favicon-192x192.png" sizes="192x192">
<!-- mobile-web-app-capable - Run Android/Chrome version M31 to M38 in standalone mode, hiding the browser chrome. -->
<!-- <meta name="mobile-web-app-capable" content="yes"> -->

<!-- Apple Icons - You can move all these icons to the root of the site and remove these link elements, if you don't mind the clutter.
    https://developer.apple.com/library/safari/documentation/AppleApplications/Reference/SafariHTMLRef/Introduction.html#//apple_ref/doc/uid/30001261-SW1 -->
<!-- apple-mobile-web-app-title - The name of the application if pinned to the IOS start screen. -->
<!--<meta name="apple-mobile-web-app-title" content="">-->
<!-- apple-mobile-web-app-capable - Hide the browsers user interface on IOS, when the app is run in 'standalone' mode. Any links to other pages that are clicked whilst your app is in standalone mode will launch the full Safari browser. -->
<!--<meta name="apple-mobile-web-app-capable" content="yes">-->
<!-- apple-mobile-web-app-status-bar-style - default/black/black-translucent Styles the IOS status bar. Using black-translucent makes it transparent and overlays it on top of your site, so make sure you have enough margin. -->
<!--<meta name="apple-mobile-web-app-status-bar-style" content="black">-->
<!-- apple-touch-icon-57x57.png - Android Stock Browser and non-Retina iPhone and iPod Touch -->
<link rel="apple-touch-icon" sizes="57x57" href="https://stackoverflow.com/content/images/apple-touch-icon-57x57.png">
<!-- apple-touch-icon-114x114.png - iPhone (with 2× display) iOS = 6 -->
<link rel="apple-touch-icon" sizes="114x114" href="https://stackoverflow.com/content/images/apple-touch-icon-114x114.png">
<!-- apple-touch-icon-72x72.png - iPad mini and the first- and second-generation iPad (1× display) on iOS = 6 -->
<link rel="apple-touch-icon" sizes="72x72" href="https://stackoverflow.com/content/images/apple-touch-icon-72x72.png">
<!-- apple-touch-icon-144x144.png - iPad (with 2× display) iOS = 6 -->
<link rel="apple-touch-icon" sizes="144x144" href="https://stackoverflow.com/content/images/apple-touch-icon-144x144.png">
<!-- apple-touch-icon-60x60.png - Same as apple-touch-icon-57x57.png, for non-retina iPhone with iOS7. -->
<link rel="apple-touch-icon" sizes="60x60" href="https://stackoverflow.com/content/images/apple-touch-icon-60x60.png">
<!-- apple-touch-icon-120x120.png - iPhone (with 2× and 3 display) iOS = 7 -->
<link rel="apple-touch-icon" sizes="120x120" href="https://stackoverflow.com/content/images/apple-touch-icon-120x120.png">
<!-- apple-touch-icon-76x76.png - iPad mini and the first- and second-generation iPad (1× display) on iOS = 7 -->
<link rel="apple-touch-icon" sizes="76x76" href="https://stackoverflow.com/content/images/apple-touch-icon-76x76.png">
<!-- apple-touch-icon-152x152.png - iPad 3+ (with 2× display) iOS = 7 -->
<link rel="apple-touch-icon" sizes="152x152" href="https://stackoverflow.com/content/images/apple-touch-icon-152x152.png">
<!-- apple-touch-icon-180x180.png - iPad and iPad mini (with 2× display) iOS = 8 -->
<link rel="apple-touch-icon" sizes="180x180" href="https://stackoverflow.com/content/images/apple-touch-icon-180x180.png">

<!-- Apple Startup Images - These are shown when the page is loading if the site is pinned https://gist.github.com/tfausak/2222823 -->
<!-- apple-touch-startup-image-1536x2008.png - iOS 6 & 7 iPad (retina, portrait) -->
<link rel="apple-touch-startup-image"
      href="https://stackoverflow.com/content/images/apple-touch-startup-image-1536x2008.png"
      media="(device-width: 768px) and (device-height: 1024px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 2)">
<!-- apple-touch-startup-image-1496x2048.png - iOS 6 & 7 iPad (retina, landscape) -->
<link rel="apple-touch-startup-image"
      href="https://stackoverflow.com/content/images/apple-touch-startup-image-1496x2048.png"
      media="(device-width: 768px) and (device-height: 1024px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 2)">
<!-- apple-touch-startup-image-768x1004.png - iOS 6 iPad (portrait) -->
<link rel="apple-touch-startup-image"
      href="https://stackoverflow.com/content/images/apple-touch-startup-image-768x1004.png"
      media="(device-width: 768px) and (device-height: 1024px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 1)">
<!-- apple-touch-startup-image-748x1024.png - iOS 6 iPad (landscape) -->
<link rel="apple-touch-startup-image"
      href="https://stackoverflow.com/content/images/apple-touch-startup-image-748x1024.png"
      media="(device-width: 768px) and (device-height: 1024px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 1)">
<!-- apple-touch-startup-image-640x1096.png - iOS 6 & 7 iPhone 5 -->
<link rel="apple-touch-startup-image"
      href="https://stackoverflow.com/content/images/apple-touch-startup-image-640x1096.png"
      media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)">
<!-- apple-touch-startup-image-640x920.png - iOS 6 & 7 iPhone (retina) -->
<link rel="apple-touch-startup-image"
      href="https://stackoverflow.com/content/images/apple-touch-startup-image-640x920.png"
      media="(device-width: 320px) and (device-height: 480px) and (-webkit-device-pixel-ratio: 2)">
<!-- apple-touch-startup-image-320x460.png - iOS 6 iPhone -->
<link rel="apple-touch-startup-image"
      href="https://stackoverflow.com/content/images/apple-touch-startup-image-320x460.png"
      media="(device-width: 320px) and (device-height: 480px) and (-webkit-device-pixel-ratio: 1)">

<!-- Windows 8 Icons - If you add an RSS feed, revisit this page and regenerate the browserconfig.xml file. You will then have a cool live tile!
     browserconfig.xml - Windows 8.1 - Has been added to the root of the site. This points to the tile images and tile background colour. It contains the following images:
     mstile-70x70.png - For Windows 8.1 / IE11.
     mstile-144x144.png - For Windows 8 / IE10.
     mstile-150x150.png - For Windows 8.1 / IE11.
     mstile-310x310.png - For Windows 8.1 / IE11.
     mstile-310x150.png - For Windows 8.1 / IE11.
     See http://www.buildmypinnedsite.com/en and http://msdn.microsoft.com/en-gb/library/ie/dn255024%28v=vs.85%29.aspx. -->
<!-- application-name - Windows 8+ - The name of the application if pinned to the start screen. -->
<!--<meta name="application-name" content="">-->
<!-- msapplication-TileColor - Windows 8 - The tile colour which shows around your tile image (msapplication-TileImage). -->
<meta name="msapplication-TileColor" content="#5cb95c">
<!-- msapplication-TileImage - Windows 8 - The tile image. -->
<meta name="msapplication-TileImage" content="/content/images/mstile-144x144.png">

我的browserconfig.xml文件。上面有完整说明。

<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
  <msapplication>
    <tile>
      <square70x70logo src="/Content/Images/mstile-70x70.png"/>
      <square150x150logo src="/Content/Images/mstile-150x150.png"/>
      <square310x310logo src="/Content/Images/mstile-310x310.png"/>
      <wide310x150logo src="/Content/Images/mstile-310x150.png"/>
      <TileColor>#5cb95c</TileColor>
    </tile>
  </msapplication>
</browserconfig>

我的manifest.json文件。上面有完整说明。

{
    "name": "ASP.NET MVC Boilerplate (Required! Update This)",
    "icons": [
        {
            "src": "\/Content\/icons\/android-chrome-36x36.png",
            "sizes": "36x36",
            "type": "image\/png",
            "density": "0.75"
        },
        {
            "src": "\/Content\/icons\/android-chrome-48x48.png",
            "sizes": "48x48",
            "type": "image\/png",
            "density": "1.0"
        },
        {
            "src": "\/Content\/icons\/android-chrome-72x72.png",
            "sizes": "72x72",
            "type": "image\/png",
            "density": "1.5"
        },
        {
            "src": "\/Content\/icons\/android-chrome-96x96.png",
            "sizes": "96x96",
            "type": "image\/png",
            "density": "2.0"
        },
        {
            "src": "\/Content\/icons\/android-chrome-144x144.png",
            "sizes": "144x144",
            "type": "image\/png",
            "density": "3.0"
        },
        {
            "src": "\/Content\/icons\/android-chrome-192x192.png",
            "sizes": "192x192",
            "type": "image\/png",
            "density": "4.0"
        }
    ]
}

项目中文件的列表(请注意,如果您决定将其中一些文件放置在项目的根目录中,以避免使用上述元标记,则这些文件的名称很重要):

favicon.ico
browserconfig.xml
Content/Images/
    android-chrome-144x144.png
    android-chrome-192x192.png
    android-chrome-36x36.png
    android-chrome-48x48.png
    android-chrome-72x72.png
    android-chrome-96x96.png
    apple-touch-icon.png
    apple-touch-icon-57x57.png
    apple-touch-icon-60x60.png
    apple-touch-icon-72x72.png
    apple-touch-icon-76x76.png
    apple-touch-icon-114x114.png
    apple-touch-icon-120x120.png
    apple-touch-icon-144x144.png
    apple-touch-icon-152x152.png
    apple-touch-icon-180x180.png
    apple-touch-icon-precomposed.png (180x180)
    favicon-16x16.png
    favicon-32x32.png
    favicon-96x96.png
    favicon-192x192.png
    manifest.json
    mstile-70x70.png
    mstile-144x144.png
    mstile-150x150.png
    mstile-310x150.png
    mstile-310x310.png
    apple-touch-startup-image-1536x2008.png
    apple-touch-startup-image-1496x2048.png
    apple-touch-startup-image-768x1004.png
    apple-touch-startup-image-748x1024.png
    apple-touch-startup-image-640x1096.png
    apple-touch-startup-image-640x920.png
    apple-touch-startup-image-320x460.png

总开销

如果您删除了3KB额外HTML的注释,则不支持1.5KB的启动屏幕。如果您正在对HTML内容使用GZIP压缩(如今所有人都应该这样做),那么每个请求支持所有平台的开销约为634字节,或者没有启动屏幕的情况为446字节。我个人认为支持IOS,Android和Windows设备是值得的,但是您可以选择,我只是提供选择!

关于当前Web图标/初始屏幕/设置情况的旁注

这种带有供应商特定图标,初始屏幕和用于控制Web浏览器或固定图标的特殊标签的情况是荒谬的。在理想的情况下,我们都将使用favicon.svg文件,该文件无论大小如何都可以看起来很好,并且可以放置在页面的根目录下。在撰写本文时,只有FireFox支持此功能(请参见CanIUse.com)。

但是,图标并不是当今唯一的设置,还有其他几个特定于供应商的设置(如上所示),但是favicon.svg文件将涵盖大多数用例。

更新资料

已更新,以包括新的Android / Chrome版本M39 +图标/主题选项。有趣的是,它们采用了与Microsoft类似的方法,但是使用的是JSON文件而不是XML。


4
这太多了。(不是您的回答,而是浏览器供应商有这么多要求的事实:)。
2016年

@jor完全同意,这是一个愚蠢的情况。svg favicons将解决90%的问题。
穆罕默德·雷汉

看到我的答案stackoverflow.com/a/45301651/661584容易得多。可能有帮助。感谢
MemeDeveloper

您提到文件的名称很重要。我不太明白你在说什么。我的问题是,我是否可以重命名所有文件,使它们以favicon-... 为前缀-如果我更新清单文件和<link>html文档中的标记中的名称head
SherylHohman

5

最简单的解决方案是使用一个(!)PNG图像(在2020年)。

只需将其添加到文档的开头即可:

<link rel="shortcut icon" type="image/png" href="https://stackoverflow.com/img/icon-192x192.png">
<link rel="shortcut icon" sizes="192x192" href="https://stackoverflow.com/img/icon-192x192.png">
<link rel="apple-touch-icon" href="https://stackoverflow.com/img/icon-192x192.png">

最后一个链接用于Apple(主屏幕),第二个链接用于Android(主屏幕),第一个链接用于其余部分。

请注意,此解决方案在Windows 8/10中不支持“平铺”。它确实支持快捷方式,书签和浏览器选项卡中的图像。

大小恰好是Android主屏幕使用的大小。Apple主屏幕图标的大小为60px(3x),因此为180px,并将按比例缩小。其他平台使用默认的快捷方式图标,该图标也会按比例缩小。


1
只是想知道196像素大小从何而来。这是针对特定设备或标准的规范吗?
bluesixty

这是Android主屏幕规范:emergeinteractive.com/insights/detail/…。最初,它是196×196的图标。我重新阅读了规范,这是我一段时间没有做的事情了。我意识到发生了变化:196×196变为192×192。realfavicongenerator.net/blog/android-chrome-and-its-favicon
JoostS

1

我实际上是在问自己同样的问题,并试图寻找可以集成到构建步骤中的任何简单项目,或者只是简化所需资产和标记的创建。

我找不到符合我要求的任何内容,因此我创建了faviconbuild并在MIT许可下发布了它。

该项目的目的是创建一个集中的,可维护的和本地可运行的跨平台实用程序,以构建图标和支持标记。它利用了Imagemagick的功能,因此您需要为平台下载或使用我在发行版中提供的功能。请随时在商业或个人项目中使用此功能,进行贡献,提交功能请求,或仅用作自己实用程序的灵感来源。

该项目包括Windows的批处理文件和Unix / Mac(或通过Cygwin的Windows)的bash脚本。您可以从内部帮助选项-h或--help中获得受支持选项的完整列表。

例如:

./faviconbuild.sh -h

这两个脚本都解析一个简单的文本文件,您也可以使用-p或--parsed选项覆盖它们。该文件基本上只是运行命令的模板,因此您可以根据需要更轻松地自定义输出。

我还发布了有关开发的博客文章,以及有关bash / batch脚本的迷你教程。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.