Favicon

HTML

Основа
Самое лучшее решение для главной иконки сайта – вообще не использовать никакую HTML разметку. Оно обеспечит максимальную кросс-браузерность и будет работать во всех браузерах вплоть до IE6 (Исключение составляет только браузер SeaMonkey).
Вам всего лишь нужно назвать файл с иконкой favicon.ico и поместить в корневой каталог вашего домена. [1][2]
Опциональные, но рекомендованные иконки
Возможно, вам потребуются следующие:
  1. Иконка для устройств на  iOS 2.0+ и Android 2.1+
  2. Плиточная иконка для IE10 Metro (аналог apple-touch-icon)

    Замените #FFFFFF на то значение цвета, которое вам нравится.
Крайне опционально, для помешанных
Если вы такой, то вам они просто необходимы:
  1. Иконки для мобильных устройств, от больших к меньшим
  2. Любые другие иконки

Изображения

Как минимум, необходимо создать следующую иконку:
РазмерыИмяНазначение
16х16 & 32×32favicon.icoТребуется для IE, а Chrome и Safari могут выбирать ico вместо png. Печально
Подробнее о favicon.ico можно будет почитать ниже. Да, это один файл с  несколькими размерами.
Также, если вы беспокоитесь о iOS и Android, но ленивы, то добавьте всего одну иконку:
РазмерИмяНазначение
152×152 favicon -152. png Общая иконка для iOS и Android, устройства автоматически уменьшат ее до требуемого размера
Но не забывайте о том, что иконки со сложной графикой часто неправильно масштабируются в автоматическом режиме. Вам может потребоваться подготовить иконки меньших размеров самостоятельно.
Если вы помешались на иконках, создайте и эти:
РазмерИмяНазначение
32×32 favicon -32. png Некоторые старые версии Chrome плохо обращаются с ico
57×57 favicon -57. png Стандартная иконка домашнего экрана на iOS (iPod Touch, iPhone от первого поколения до 3G)
72×72 favicon -72. png Иконка домашнего экрана на iPad
96×96 favicon -96. png Иконка Google TV
120×120 favicon -120. png Иконка для iPhone Retina (Изменения для iOS 7: размер увеличен с 114х114)
128×128 favicon -128. png Иконка для магазина Chrome
144×144 favicon -144. png Иконка IE10 в стиле плитки для закрепленных сайтов на начальном экране
152×152 favicon -152. png Иконка для iPad Retina (Изменения для iOS 7: размер увеличен с 144х144)
195×195 favicon -195. png Иконка Opera Speed Dial
228×228 favicon -228. png Иконка Opera Coast

Файл ICO

Файл с расширением .ico представляет собой контейнер для нескольких иконок различных размеров в формате .bmp или .png. Вам, как минимум, нужно создать следующие:
РазмерНазначение
16×16Адресная строка IE9, закрепленный сайт в списках переходов, панели инструментов или панели закладок
32×32Новая вкладка в IE, кнопка в панели задач в Win 7+, сайдбар Safari Read Later
48×48Иконка cайта в Windows

Если вы хотите большего и вас не беспокоят лишние 1-3кб в размере файла, то добавьте еще и следующие размеры:
РазмерНазначение
24×24Закрепленный сайт в интерфейсе браузера IE9
64×64Иконка cайта в Windows, сайдбар Safari Reading List на дисплеях Retina/HiDPI

Создавайте свой .ico файл из оптимизированных .png файлов.

Инструменты в помощь

Я рекомендую:
  1. OptiPNG - для оптимизации файлов .png перед помещением их в файл .ico
  2. ImageMagick – для создания .ico из файлов .png. Простой пример использования тут
Остальные инструменты, которые я не пробовал:

Принудительное обновление favicon

Обычно оно не требуется.  Это только для тех случаев, когда в процессе разработки ваша иконка не обновляется автоматически:
  • Очистите кэш браузера (Ctrl+F5 или Ctrl+Shift+R)
  • Если браузер IE, то закройте его и откройте снова.
  • Если не помогло, попробуйте открыть новую вкладку. Или почитайте эту статью
  • Временно добавьте разметку HTML, явно указывающую на размер и месторасположение иконки. Уберите её когда все будет ОК:
Для огромных проектов, если все посетители сайта должны принудительно обновить их иконки:
  • Добавить HTML-разметку (измените атрибут sizes под себя), явно указывающую на конкретную иконку и поместите номер версии в имя файла: 

FAQ

Что будет, если  я положу в корень одновременно файлы  favicon .ico и  favicon . png 
Я думаю, что все-таки лучше ограничиться только одним файлом favicon.ico, так как:
  • Файл .ico является контейнером для нескольких файлов .bmp или .png. Если вы укажете один файл  favicon . png , в качестве основного, и если он переопределяет файл  favicon .ico, вы не сможете контролировать отображение иконки на разных разрешениях, а также не позволите браузеру контролировать её размер. Например, вы хотите, чтобы у вас была иконка 64х64, которая содержит какой-то текст, а также чтобы была иконка 16х16 без текста, т.к. при размере 16х16 текст будет все-равно не читаем.
  • В спецификации HTML5 ничего не написано про  favicon . png , только о  favicon .ico
Больше информации об этом можно получить по ссылке http://stackoverflow.com/questions/1344122/ favicon-png-vs-favicon-ico -why-should-i-use-pngs-instead-of-icos/1344379
Правда ли, что иконки должны находиться в корне сайта?
Нет, они должны там лежать только в том случае, если вы явно не указали браузеру/устройству путь до иконок в теге <link>. См. https://en.wikipedia.org/wiki/Favicon.ico
Если у вас нет в корне favicon.ico – рассмотрите возможность его добавления, иначе будет возвращаться ответ HTTP 204. Многие инструменты и сервисы, такие как закладки, читалки RSS, поисковые роботы и т.д., запрашивают файл favicon.ico из корня сайта и если его не находят, возвращают ответ HTTP 404. В худшем случае некоторые фреймворки возвращают собственную страницу с ошибкой, которая может весить во много раз больше самой иконки.
Правда ли, что иконки в формате . png  обязательно именовать как  favicon . png ?
Нет, это никогда не было правдой, насколько я могу судить по своим исследованиям.
Правда ли, что иконки в формате .ico обязательно именовать как favicon.ico?
Если вы явно не указали иконки в теге <link>, то да. Для лучшей ясности рекомендуется назвать файл с иконками favicon.ico и явно указать путь до него в теге <link>.
Стоит ли использовать префикс “apple-touch-icon” в имени файла?
Если вы не зададите теги <link>, то iOS будет искать имена файлов с префиксами “apple-touch-icon” и “apple-touch-icon-precomposed”. Многое основано (например HTML5 Boilerplate) на этом, но:
  • Явное определение тега <link> вносит больше ясности и, тем более, оно поддерживается Apple
  • Если жестко не указывать имя файла, можно избежать путаницы относительно повторного использования иконок для других целей, например,  favicon -144. png  используется также и для сайта, закрепленного на экране в Windows.
Почему нужно использовать precomposed иконки для iOS?
  • обычные иконки iOS имеют скругленные края, блики и отбрасывают тень.Звучит круто в теории, но на практике результат может разочаровать, особенно дизайнеров.
  • обычное иконки не работают в Android 2.1
Почему следует использовать абсолютные пути?
Некоторые версии Firefox требуют использования абсолютных путей. Это самый простой выбор, потому что их поддерживают все браузеры.
Почему бы не добавить строчку запроса принудительного обновления иконки для всех пользователей?
Некоторые прокси-сервера и стабилизаторы нагрузки в крайних случаях могут игнорировать эту строчку.

Комментарии

Популярные сообщения из этого блога

Переключатель список/плитка в Битриксе

Битрикс проблемы и решения походу создания сайтов