ファビコン-ベストプラクティス


106

私は、ファビコン、タッチアイコン、そしてタイルアイコンにも必要なこれらすべてのさまざまなサイズとフォーマットを理解しようとしています。

私はこの投稿を読みました:http : //www.jonathantneal.com/blog/understand-the-favicon ですが、すべてのデバイスとブラウザで適切に表示されるようにするために何を使用するかについてはまだ漠然としています> = IE8 。

私は以下を作成する必要があると思います:

ICO
favicon.ico(32x32)

PNG
favicon.png(96x96)

タイルアイコン
tileicon.png(144x144)

これに基づくApple Touch Icon
apple-touch-icon-precomposed.png(152x152)https://github.com/h5bp/html5-boilerplate/issues/1367

...そして、このコードを使用してそれらを提供しますか?

<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のWebサイトで見てみましょう:Appleデベロッパ
Ruub

1
執筆時点でのアップルのWebサイトには、スプラッシュスクリーンのイメージに関する情報が不完全で不足しています。
Muhammad Rehan Saeed 2014

WOW-何をここで詳しく説明します。簡潔で簡単な回答が必要な場合は、stackoverflow.com / a / 45301651/661584を参照してください。感謝
MemeDeveloper 2017

回答:


114

ファビコンは、実際よりもずっと複雑です。10年前、favicon.ico唯一必要なアイテムでした。次に、タッチアイコン、さまざまなiOSデバイスの画面解像度による複数のタッチアイコン、Windows用のタイルアイコンがありました...

ここでのいくつかの回答は非常に包括的で、圧倒的です(これはすべて、ファビコンについてのみですか?)。しかし、Windowsの310x310タイルアイコンは558x558にすることをお勧めします。また、数か月前に書かれたため、Android Chrome M39の最近のマニフェストや、OS X El Capitan上のSafariの固定タブSVGアイコンについては触れていません。

プラットフォームごとの設計は、もう1つの難しい、しかし無視されているトピックです。たとえば、ファビコンはしばしば透明です。しかし、iOSは透明性をサポートしていません(この例として、SOタッチアイコンと、iPhoneのホーム画面にSOを追加したときに表示されるものを比較してください)。

これらの理由から、ファビコンのベストプラクティスは、手動で作成しないことです。代わりに、ツールを使用してプロセス全体を自動化し、プラットフォームのガイドラインを適用します。

RealFaviconGeneratorを使用することをお勧めします。それはあなたが仕事を成し遂げるために必要なすべての写真とHTMLコードを生成します:

  • favicon.ico デスクトップブラウザのPNGおよびPNGアイコン
  • iOSおよびAndroidデバイス用のAppleタッチアイコン
  • 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">
リック・デイヴィス

1
ありがとう!browserconfig.xmlへのパスについて:生成されたコードには既に含まれていますね。
philippe_b 2014

1
ファイルは生成されますが、コード行は生成されません。試しました。ところで素晴らしいサービスをありがとう。
user664833

1
@ user664833フィードバックをありがとう:) browserconfig.xmlを宣言する行を意味しますか?
philippe_b 2014

3
これは目的で行われます。browserconfig.xmlサイトのルートにある限り、宣言する必要はありません。IEが自動的に検索します。それ以外の場合(オプションに特定のパスを入力した場合)は、宣言が生成されます。
philippe_b 2014

56

モバイルとタブレット用のファビコンの完全な(私が知っているように)例は次のとおりです。

<!-- 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の場合、ここに FAQがあります


2
すごい-IE11の新しいものも!情報を投稿していただきありがとうございます。
レオン

4
ただし、「apple-touch-icon-precomposed.png」と「apple-touch-icon.png」は含まれません
Peter

2
+1しかし、これがベストプラクティスであるかどうかはよくわかりません。ベストプラクティス(IMHO)とより実用的なアプローチについては、以下のNeil Robertsonによって提案された優れたチートシートを参照してください。
ボアズ2014

6と6+でも機能するように回答を更新できますか?または、上記のコードは機能する必要がありますか?
Rvervuur​​t 2015年

私の回答stackoverflow.com/a/45301651/661584をはるかに簡単に参照してください。役立つかもしれません。感謝
MemeDeveloper 2017

25

さまざまなデバイスに設定できるさまざまなアイコンやスプラッシュスクリーンさえあります。この回答では、それらすべてをサポートする方法について説明します。

これは、私が情報を収集した場所への関連リンクとともに使用したスニペットです。ASP.NET MVCボイラープレートプロジェクトテンプレートの詳細と詳細については、私のブログを参照しください。これらはすべて、すぐに組み込まれています(サンプル画像ファイルを含む)。

次のマークアップを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と同様のアプローチを行っていますが、XMLではなくJSONファイルを使用しています。


4
これは、やりすぎ。(あなたは答えではありませんが、ブラウザのベンダーが非常に多くの要件を持っているという事実:))。
JOR

@jor完全に同意する、それはばかげた状況です。svgファビコンは問題の90%を解決します。
Muhammad Rehan Saeed

私の回答stackoverflow.com/a/45301651/661584をはるかに簡単に参照してください。役立つかもしれません。感謝
MemeDeveloper 2017

あなたはファイルの名前が重要であると述べました。あなたが何を言っているのかよくわかりませんでした。私の質問は、すべてのファイルの名前を変更して、先頭にfavicon-... を付けることはできますか-マニフェストと<link>htmlドキュメントのタグの名前を更新した場合headですか?
SherylHohman

5

最も簡単な解決策は、1つの(!)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(ホーム画面)、2番目は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スクリプトに関するミニチュートリアルとして公開しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.