Это перевод статьи Филипа Бернарда с сайта css-tricks.com. Часть статьи, содержащую описание работы с созданным им сервисом, я позволил себе опустить. Если вы найдете ошибки, просьба сообщить о них в личном сообщении.
Статья содержит результаты проведенного им исследования, каким должен быть фавикон (и то что его заменяет), чтобы хорошо отображаться в различных случаях.
Фавикон был представлен в 1999 году, в Internet Explorer 5 (источник) и стандартизирован W3C несколько месяцев спустя. Это была маленькая иконка, представляющая сайт.
![](https://habrastorage.org/files/081/8bd/836/0818bd8367154815a605aaab1769959d.jpg)
С тех пор большинство настольных браузеров следуют тенденции и используют фавикон тем или иным способом. Это очень просто, не так ли? Создать маленькую картинку и добавить в любой интернет-проект, чтобы сделать его «завершённым». Ничего сложного. Или нет?
Устроим викторину!
Каков основной файл фавикона?
Ответ: 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 выглядит хорошо:
![](https://habrastorage.org/files/133/ddf/63b/133ddf63b41c4230a831f5b115c93918.png)
16х16 на вкладке Chrome. Пока всё хорошо.
Но иконка 16х16 слишком мала для других мест: панели задач и рабочего стола.
![](https://habrastorage.org/files/f25/4cf/cfd/f254cfcfde1c471d9710a4c19c4bd808.png)
16х16 в панели задач.
![](https://habrastorage.org/files/9a6/52d/37c/9a652d37c24a4646ab99c4b06057ae3e.png)
16х16 на рабочем столе. Не хорошо.
Когда иконка содержит несколько изображений, результат гораздо лучше.
![](https://habrastorage.org/files/533/810/121/53381012164f4149847d9c230f88e9b5.png)
16х16, 32х32 и 48х48 favicon.ico в панели задач. Выглядит как обычная программа.
![](https://habrastorage.org/files/64e/559/6b1/64e5596b118440f5a83e16802366e06c.png)
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 |
![](https://habrastorage.org/files/744/962/7f1/7449627f17ef4a6ab534be375f61dfef.png)
Старая 57х57 Apple Touch icon на блестящем Retina iPad. Мутно.
![](https://habrastorage.org/files/243/ebb/13c/243ebb13cd6d49d98bbdfcd4609c7093.png)
Большая 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 предлагает несколько новых принципов дизайна, например, «белые силуэты», используемые большинством предустановленных программ.
![](https://habrastorage.org/files/111/2bb/6c2/1112bb6c201242a2be89e2d2b0fc0042.png)
Плитки сайтов в Windows 8.
Вопрос: Каков размер плитки square150x150logo?
A: 150х150. Вы не умеете читать?
B: Иной.
Ответ: B, 270х270. Майкрософт рекомендует больший размер, в целях поддержки экранов с высокой плотностью пикселов.
Поздравляем, вы закончили викторину! Как вы это сделали?
Суть этих вопросов — показать какой сложной может быть действительность, несмотря на кажущуюся простоту. Времена, когда фавикон был единственным favicon.ico давно ушли. Но старые привычки сохраняются и могут привести к абсурдным ситуациям. Мы тратим дни на аккуратный отзывчивый дизайн и добавляем только 57х57 Apple Touch icon, подходящий только для старых устройств, которыми сегодня уже почти никто не пользуется.
Комментарии (42)
jemali_m
21.06.2015 17:53+16Взять все эти стандарты и сжечь!
BaRoN
21.06.2015 18:03Действительно, ведь когда каждый будет использовать «свой стандарт» / «корпоративный стандарт» — это гораздо лучше, чем 3 действующих ныне стандарта.
Keyten
21.06.2015 19:24+12А давайте придумаем единый стандарт!
Mishok2000
21.06.2015 20:29+4А почему Keyten минусуют? (По-моему вполне себе в тему написал, и ни один подобный пост не обходиться без такой картинки(или как это называется))
ivan386
21.06.2015 20:16+6А почему не SVG?
thelongrunsmoke Автор
21.06.2015 20:40А насколько это совместимо?
ivan386
21.06.2015 21:27Не очень. Но надеюсь это исправится.
thelongrunsmoke Автор
22.06.2015 05:34Поддерживается только последним огнелисом? Похоже, вендоры не торопятся. Наверно, это связано с несколько большими затратами на отрисовку браузером и большим объёмом файла.
fetis26
21.06.2015 22:22+1SVG снимет только часть проблема с размерами. Но как быть с разным дизайном под разные платформы?
Mishok2000
21.06.2015 23:02+1Как я полагаю, данную проблему вообще нельзя решить для большинства случаев(опять же, есть исключения). Так как каждая платформа хочет иметь и имеет собственно уникальный дизайн(iOS, Android, Windows), то отсюда следуют выводы — если ты хочешь оставаться в «тренде», нужно делать под каждую ОС свою иконку приложения.
P.s. исключение: иногда под Android и iOS можно сделать одну и ту же иконку.
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>
Finesse
22.06.2015 05:47Можно ли не прописывать весь зоопарк размеров, а сделать одно большое изображение и указать его тегом <link rel=«icon» type=«image/png»...?
stn
22.06.2015 07:12+1Можно. Но тогда в иконке 16х16 может оказаться груда пикселей вместо осмысленного изображения. Чем меньше изображение, тем сложнее его передать. Возможно придется утрировать полное лого до его отдельного узнаваемого элемента.
Finesse
22.06.2015 07:17Понятно. Тут уже будем смотреть по ситуации. Если в уменьшенном виде плохо смотрится, то придётся прописывать дополнительные иконки.
Finesse
22.06.2015 07:27Жаль, что ico или подобный формат не прижился. Удобно хранить все иконки в одном файле.
IvanNovikov
22.06.2015 08:18+1Хранить конечно удобнее, но при этом каждое устройство должно будет скачать весь набор иконок, а в случае с png скачиваются только нужные иконки.
ilyak
Не хватает только ссылки на сервис, который сгенерирует правильный и полный код для всех этих иконок.
datacompboy
www.perl.org?
ivan386
Был такой. Я им сделал и кучу иконок для разных устройств и браузеров и код для страницы из Svg лого.
ADOLF88HITLER
Пусть лучше страдает машина.
github.com/gleero/grunt-favicons