От переводчика.
Это перевод статьи Филипа Бернарда с сайта css-tricks.com. Часть статьи, содержащую описание работы с созданным им сервисом, я позволил себе опустить. Если вы найдете ошибки, просьба сообщить о них в личном сообщении.

Статья содержит результаты проведенного им исследования, каким должен быть фавикон (и то что его заменяет), чтобы хорошо отображаться в различных случаях.


Фавикон был представлен в 1999 году, в Internet Explorer 5 (источник) и стандартизирован W3C несколько месяцев спустя. Это была маленькая иконка, представляющая сайт.



С тех пор большинство настольных браузеров следуют тенденции и используют фавикон тем или иным способом. Это очень просто, не так ли? Создать маленькую картинку и добавить в любой интернет-проект, чтобы сделать его «завершённым». Ничего сложного. Или нет?

Устроим викторину!

Каков основной файл фавикона?


Ответ: favicon.ico. Просто, чтобы удостовериться: это не PNG, переименованный в favicon.ico. Хотя, некоторые браузеры простят эту ошибку, ICO это другой формат, поддерживающий несколько версий изображения.

Вопрос: Какого размера должен быть favicon.ico?


A: 16х16. Стандартный.
B: 32х32. Разве фавикон не обновлялся некоторое время назад?
C: 64x64. Знаете, со всеми этими новыми экранами с высокой плотностью пикселей.
D: Ни один из перечисленных.

Ответ: D.

Формат favicon.ico изначально задуман Майкрософт и поддержан некоторыми другими производителями. Майкрософт рекомендует размеры 16х16, 32х32 и 48х48. Да, один ICO может содержать несколько изображений.

Браузеры обычно отображают фавикон на вкладках, и на обычных разрешениях, версия 16х16 выглядит хорошо:

16х16 на вкладке Chrome. Пока всё хорошо.

Но иконка 16х16 слишком мала для других мест: панели задач и рабочего стола.

16х16 в панели задач.


16х16 на рабочем столе. Не хорошо.

Когда иконка содержит несколько изображений, результат гораздо лучше.

16х16, 32х32 и 48х48 favicon.ico в панели задач. Выглядит как обычная программа.


16х16, 32х32 и 48х48 favicon.ico на рабочем столе. Идеально.

Вопрос: Каково назначение favicon.png?


На самом деле, чаще встречается другой файл, favicon.png. Люди часто спрашивают об этом.
Что это на самом деле?

A: Иконка для браузеров не поддерживающих favicon.ico. Такие как Firefox, наверно?
B: Иконка высокого разрешения. Знаете, со всеми этими новыми экранами с высокой плотностью пикселей.
C: Артефакт из прошлого. Теперь это новые иконки, например, Apple Touch icon.
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, этот файл устарел. Да, вы по-прежнему можете использовать этот файл и всё будет работать, как задумано. Но серьёзно, это устаревший формат. Он не используется нигде, кроме веба. PNG поддерживается гораздо лучше.

favicon.ico — для старых версий IE. Для остальных браузеров и последних версий IE используйте PNG иконки. Так какие sizes необходимо определять? Скоро узнаем.

Вопрос: Какой формат необходим для поддержки мобильных платформ?


Согласно SmartInsights, больше 26% веб-трафика генерируется смартфонами и планшетами. Это будущее. Что нужно для поддержки этого мира?

A: favicon.ico. Это работало 15 лет назад, работает и сегодня.
B: PNG иконки. Вы сказали, что расскажете об этом.
C: Apple Touch icon. Кэп.
D: Здесь, всё равно, нет правильного ответа.

Ответ: D. Нужны PNG иконки. И Apple Touch icon. И плитки для Windows 8. И файл под названием browserconfig.xml.

Мобильные платформы гораздо более гетерогенны, чем обычные настольные браузеры. Размеры экранов и разрешения очень сильно варьируются и нет преобладающей операционной системы, такой как Windows, как это было во времена появления интернета.
Следствие: не думайте, что мобильный фавикон может быть одной универсальной картинкой или иметь универсальное объявление в HTML коде.

Вопрос: Какого размера должны быть PNG иконки?


A: 96х96 для Google TV
B: 196х196 для Android Chrome
C: 228х228 для Opera Coast
D: Все перечисленные


Ответ: D, и даже более. Например, 160х160 для старой версии быстрого набора Opera (давно в прошлом), или 128х128 для Chrome Web Store, всё сильно зависит от платформы, которую вы собираетесь поддерживать.

Вопрос: Каков размер Apple Touch icon?


Apple Touch icon используемые iOS для закладок и сайтов «на домашнем экране». На ум приходит 57х57, браво. Это правильно. Только это было 7 лет назад, когда был выпущен первый iPhone.

Ответ: Вплоть до 180х180.

После появления первого iPhone, было 3 важных релиза:
  • iPad. С экраном гораздо большего размера.
  • Retina-экраны. С удвоеной плотностью пикселов.
  • iOS7. Плоский дизайн отличается на iPhone/iPad.

Всего есть 9 комбинаций.
Устройство Экран Версия iOS Размер иконки
iPhone Classic 6 и ниже 57x57
7 60x60
Retina 6 и ниже 114x114
7 120x120
6 Plus 8 и выше 180x180
iPad Classic 6 и ниже 72x72
7 76x76
Retina 6 и ниже 144x144
7 152x152


Старая 57х57 Apple Touch icon на блестящем Retina iPad. Мутно.


Большая 152х152 Apple Touch icon на Retina iPad. Аккуратно.

Если вы ответили неверно, не расстраивайтесь. Из 5000 популярных сайтов, которые предоставляют apple-touch-icon.png, менее 4% делают это правильно.

Некоторый могут возразить, что все 9 изображений не очень и нужны. Однако, по крайней мере, основная Apple Touch icon должна быть 152х152. Retina iPad под iOS 7 найдет что нужно, а младшие устройства могут уменьшить изображение.

Вопрос: Необходимо ли объявлять Apple Touch icon в HTML?


A: Не знаю. Надо же что-то ответить!
B: Да. Иначе как iOS найдет их?
C: Нет. Apple предлагает рекомендации, так что любое iOS устройство всё равно их надет.
D: Нет, но...

Ответ: D… но некоторые другие платформы тоже используют Apple Touch icon, лучше их объявить.
<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 icon. Поскольку они популярнее и встречаются чаще других PNG иконок высоких разрешений, некоторые браузеры, вроде Android Chrome, используют их. Таким образом, лучше их объявлять, это позволит посетителю с совместимым устройством или браузером использовать одну их.

Вопрос: Как объявить плитку для планшетов на Windows 8?


A: Планшет на Windows 8? Что это такое?
B: favicon.ico. Наследие Стива Балмера.
C: Мета-теги. Два msapplication-TileColor и msapplication-TileImage.
D: browserconfig.xml.

Ответ: C для Windows 8 и IE 10, D для Windows 8.1 и IE 11. Ответ 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 предлагает несколько новых принципов дизайна, например, «белые силуэты», используемые большинством предустановленных программ.

Плитки сайтов в Windows 8.

Вопрос: Каков размер плитки square150x150logo?


A: 150х150. Вы не умеете читать?
B: Иной.

Ответ: B, 270х270. Майкрософт рекомендует больший размер, в целях поддержки экранов с высокой плотностью пикселов.

Поздравляем, вы закончили викторину! Как вы это сделали?

Суть этих вопросов — показать какой сложной может быть действительность, несмотря на кажущуюся простоту. Времена, когда фавикон был единственным favicon.ico давно ушли. Но старые привычки сохраняются и могут привести к абсурдным ситуациям. Мы тратим дни на аккуратный отзывчивый дизайн и добавляем только 57х57 Apple Touch icon, подходящий только для старых устройств, которыми сегодня уже почти никто не пользуется.

Комментарии (42)


  1. ilyak
    21.06.2015 17:45
    +11

    Не хватает только ссылки на сервис, который сгенерирует правильный и полный код для всех этих иконок.



    1. ivan386
      21.06.2015 20:21
      -1

      Был такой. Я им сделал и кучу иконок для разных устройств и браузеров и код для страницы из Svg лого.


    1. ADOLF88HITLER
      21.06.2015 22:42
      +2

      Пусть лучше страдает машина.

      github.com/gleero/grunt-favicons


  1. thelongrunsmoke Автор
    21.06.2015 17:48
    +4

    Есть в оригинале, RealFaviconGenerator


  1. jemali_m
    21.06.2015 17:53
    +16

    Взять все эти стандарты и сжечь!


    1. BaRoN
      21.06.2015 18:03

      Действительно, ведь когда каждый будет использовать «свой стандарт» / «корпоративный стандарт» — это гораздо лучше, чем 3 действующих ныне стандарта.


      1. Keyten
        21.06.2015 19:24
        +12

        А давайте придумаем единый стандарт!


        1. Mishok2000
          21.06.2015 20:29
          +4

          А почему Keyten минусуют? (По-моему вполне себе в тему написал, и ни один подобный пост не обходиться без такой картинки(или как это называется))


  1. ivan386
    21.06.2015 20:16
    +6

    А почему не SVG?


    1. thelongrunsmoke Автор
      21.06.2015 20:40

      А насколько это совместимо?


      1. ivan386
        21.06.2015 21:27

        Не очень. Но надеюсь это исправится.


        1. thelongrunsmoke Автор
          22.06.2015 05:34

          Поддерживается только последним огнелисом? Похоже, вендоры не торопятся. Наверно, это связано с несколько большими затратами на отрисовку браузером и большим объёмом файла.


      1. Serator
        21.06.2015 21:36

        (удалено)


    1. fetis26
      21.06.2015 22:22
      +1

      SVG снимет только часть проблема с размерами. Но как быть с разным дизайном под разные платформы?


      1. Mishok2000
        21.06.2015 23:02
        +1

        Как я полагаю, данную проблему вообще нельзя решить для большинства случаев(опять же, есть исключения). Так как каждая платформа хочет иметь и имеет собственно уникальный дизайн(iOS, Android, Windows), то отсюда следуют выводы — если ты хочешь оставаться в «тренде», нужно делать под каждую ОС свою иконку приложения.
        P.s. исключение: иногда под Android и iOS можно сделать одну и ту же иконку.


      1. Grawl
        24.06.2015 10:00

        Можно использовать стопку SVG (file.svg#symbol)


    1. foxnet
      22.06.2015 09:19

      А в чем преимущество использования SVG в фавикон?


      1. k12th
        22.06.2015 10:21

        В том же, в чем преимущество SVG для веба: поддержка ретины, для некоторых изображений меньший вес.


  1. torbasow
    21.06.2015 20:38
    +4

    На вопрос, какого размера должна быть картинка, правильный ответ, по-моему, должен быть такой: вектор.
    Upd: Упс, вижу, меня опередили.


    1. k12th
      22.06.2015 08:34
      +1

      Вектором может быть исходная картинка, из которой автоматом генерятся все остальные.


  1. aTei
    21.06.2015 23:19
    +8

    Изучив оригинал статьи, а потом спеки от Google, Apple и Microsoft, мы упростили до такого:
    favicon.ico, который кладем в корень сайта
    В html

    <link rel="apple-touch-icon" sizes="192x192" href="favicons/favicon-192x192.png">
    <link rel="icon" type="image/png" sizes="192x192" href="favicons/favicon-192x192.png">
    <meta name="msapplication-config" content="browserconfig.xml">
    

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


  1. Finesse
    22.06.2015 05:47

    Можно ли не прописывать весь зоопарк размеров, а сделать одно большое изображение и указать его тегом <link rel=«icon» type=«image/png»...?


    1. stn
      22.06.2015 07:12
      +1

      Можно. Но тогда в иконке 16х16 может оказаться груда пикселей вместо осмысленного изображения. Чем меньше изображение, тем сложнее его передать. Возможно придется утрировать полное лого до его отдельного узнаваемого элемента.


      1. Finesse
        22.06.2015 07:17

        Понятно. Тут уже будем смотреть по ситуации. Если в уменьшенном виде плохо смотрится, то придётся прописывать дополнительные иконки.


  1. Finesse
    22.06.2015 07:27

    Жаль, что ico или подобный формат не прижился. Удобно хранить все иконки в одном файле.


    1. IvanNovikov
      22.06.2015 08:18
      +1

      Хранить конечно удобнее, но при этом каждое устройство должно будет скачать весь набор иконок, а в случае с png скачиваются только нужные иконки.


  1. r00tGER
    22.06.2015 09:13
    +10

    — Зачем нужен favicon.ico?
    — Что-бы логи сервера не засерались 404-й ошибкой!


    1. faiwer
      22.06.2015 09:29
      +1

      Говорят можно просто:

      <link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon"> 
      
      Но я не проверял :)


  1. pepelsbey
    22.06.2015 11:37

    Оригинальной статье уже год и с тех пор очень многое изменилось.


    1. thelongrunsmoke Автор
      22.06.2015 12:05
      +11

      Можно подробнее?