0,0
рейтинг
21 июня 2015 в 16:45

Разработка → Favicons, Touch Icons, Tile Icons и т. д. Что выбрать? перевод

От переводчика.
Это перевод статьи Филипа Бернарда с сайта 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, подходящий только для старых устройств, которыми сегодня уже почти никто не пользуется.
Перевод: Philippe Bernard
Варакосов Александр @thelongrunsmoke
карма
19,0
рейтинг 0,0
Java-программист
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

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

  • +11
    Не хватает только ссылки на сервис, который сгенерирует правильный и полный код для всех этих иконок.
    • –13
    • –1
      Был такой. Я им сделал и кучу иконок для разных устройств и браузеров и код для страницы из Svg лого.
    • +2
      Пусть лучше страдает машина.

      github.com/gleero/grunt-favicons
  • +4
    Есть в оригинале, RealFaviconGenerator
    • 0
      Отличный сервис. Давно им пользуюсь.
  • +16
    Взять все эти стандарты и сжечь!
    • 0
      Действительно, ведь когда каждый будет использовать «свой стандарт» / «корпоративный стандарт» — это гораздо лучше, чем 3 действующих ныне стандарта.
      • +12
        А давайте придумаем единый стандарт!

        • +4
          А почему Keyten минусуют? (По-моему вполне себе в тему написал, и ни один подобный пост не обходиться без такой картинки(или как это называется))
          • +4
            Сам я не минусовал, но могу предположить, что минусуют за отсутствие всплывающей подсказки при наведении на картинку (в первоисточнике она есть).
  • +6
    А почему не SVG?
    • 0
      А насколько это совместимо?
      • 0
        Не очень. Но надеюсь это исправится.
        • 0
          Поддерживается только последним огнелисом? Похоже, вендоры не торопятся. Наверно, это связано с несколько большими затратами на отрисовку браузером и большим объёмом файла.
          • 0
            Большой обьем файла делает корявый редактор который при любой возможности фигуры преобразует в набор кривых. Я в ручную сократил логотип до нескольких сот байт используя возможности SVG. Ещё и анимацию прилепил. Потом есть сжатый SVGZ. Браузер всегда может преобразовать вектор в растр и работать уже с ним. Можно наверно даже скрипт сделать который SVG перегонит в растр и поставит иконкой.
            • +4
              Воздержусь от попытки представить результат растрирования SVG в иконку 16 на 16.
      • 0
        (удалено)
    • +1
      SVG снимет только часть проблема с размерами. Но как быть с разным дизайном под разные платформы?
      • +1
        Как я полагаю, данную проблему вообще нельзя решить для большинства случаев(опять же, есть исключения). Так как каждая платформа хочет иметь и имеет собственно уникальный дизайн(iOS, Android, Windows), то отсюда следуют выводы — если ты хочешь оставаться в «тренде», нужно делать под каждую ОС свою иконку приложения.
        P.s. исключение: иногда под Android и iOS можно сделать одну и ту же иконку.
      • 0
        Возможно это решается css стилями.
        • 0
          Это можно решить стилями. Но как заставить эти стили отработать на главном экране в iOS у меня нет идей
      • 0
        Можно использовать стопку SVG (file.svg#symbol)
    • 0
      А в чем преимущество использования SVG в фавикон?
      • 0
        В том же, в чем преимущество SVG для веба: поддержка ретины, для некоторых изображений меньший вес.
  • +4
    На вопрос, какого размера должна быть картинка, правильный ответ, по-моему, должен быть такой: вектор.
    Upd: Упс, вижу, меня опередили.
    • +1
      Вектором может быть исходная картинка, из которой автоматом генерятся все остальные.
  • +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>
    
    • 0
      А apple-touch-icon-precomposed.png сознательно не указали?
      Понимаю, что будет использоваться apple-touch-icon и скругляться средствами iOS, но в лог сервера будет какать ошибку «apple-touch-icon-precomposed.png 404». Для перфекционистов — истерия. :D
      • 0
        Сознательно. Ошибку «какать» не будет :)
  • 0
    Можно ли не прописывать весь зоопарк размеров, а сделать одно большое изображение и указать его тегом <link rel=«icon» type=«image/png»...?
    • +1
      Можно. Но тогда в иконке 16х16 может оказаться груда пикселей вместо осмысленного изображения. Чем меньше изображение, тем сложнее его передать. Возможно придется утрировать полное лого до его отдельного узнаваемого элемента.
      • 0
        Понятно. Тут уже будем смотреть по ситуации. Если в уменьшенном виде плохо смотрится, то придётся прописывать дополнительные иконки.
  • 0
    Жаль, что ico или подобный формат не прижился. Удобно хранить все иконки в одном файле.
    • +1
      Хранить конечно удобнее, но при этом каждое устройство должно будет скачать весь набор иконок, а в случае с png скачиваются только нужные иконки.
  • +10
    — Зачем нужен favicon.ico?
    — Что-бы логи сервера не засерались 404-й ошибкой!
    • +1
      Говорят можно просто:
      <link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon"> 
      
      Но я не проверял :)
      • 0
        С картинками тоже отображается favicon.
  • 0
    Оригинальной статье уже год и с тех пор очень многое изменилось.
    • +11
      Можно подробнее?
  • 0
    Сколько не объявляй иконок в html, будут тысячи запросов к /favicon.ico, всегда к нему и всегда в корень. Без юзер-агента.
  • –1
    Для тех, кто не занимается прорисовкой каждого размера фавиконки в отдельности с разной детализацией, было бы круто иметь сервис, куда можно залить векторную иконку и он сам нарежет ее на нужные размеры в нужных форматах и выдаст готовый архив для вставки в head.
    • +1
      выше упомянули RealFaviconGenerator.
  • 0

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