Favicon сегодня: форматы, поддержка, автоматизация

Favicon сегодня: форматы, поддержка, автоматизация

На сегодняшний день favicon - это не просто значок 16x16 во вкладке браузера. Он является важной составляющей интерфейса, а также играет важную роль в прогрессивных веб-приложениях. Существует немало способов подключения и использования favicon, о которых мы расскажем в данной статье.

В каком формате должен быть фавикон

Раньше основным форматом фавикона был формат ICO. Его главная особенность заключалась в том, что файл такого формата мог хранить в себе несколько вариантов размеров иконки. Сейчас формат ICO считается устаревшим, на смену ему пришёл формат PNG с новыми возможностями по взаимодействию с иконкой.

Помимо PNG, поддерживается формат SVG. На данный момент у него, к сожалению, невысокая поддержка, однако этот формат идеально подходит для фавиконов, его использование намного бы упростило нам жизнь. Будем надеяться, что ситуация скоро изменится. Фавикон может быть создан ещё в нескольких форматах, например, в формате GIF или JPEG, но проблемы с поддержкой делают их использование нецелесообразным.

Фавикон и атрибут sizes

Атрибут sizes пришел в нашу жизнь с HTML5. Благодаря ему браузер или устройство может выбрать необходимый ему размер фавикона. Атрибут sizes указывается в формате [ширина х высота] без указания единиц. Если в файле хранится сразу несколько иконок, можно задавать их размеры через пробел. Ключевое слово any указывает, что иконка может масштабироваться до любого размера, например, если она хранится в векторном формате SVG.

link rel="icon" sizes="<ширина>X<высота>"
link rel="icon" sizes="<ширина1>X<высота1> <ширина2>X<высота2>* | any" 

Пора ли отправлять ICO на свалку?

Как мы уже сказали, формат ICO сегодня можно считать устаревшим, но значит ли это, что от него нужно срочно избавиться? Ответ, как всегда, неоднозначный. Есть случаи, когда формат ICO ещё может сослужить вам хорошую службу. Приведём несколько примеров оправданного использования фавикона в формате ICO в разных операционных системах и поговорим об альтернативах.

Windows

Начнём с Windows. До 11 версии формат PNG в IE не поддерживался, поэтому для IE10 и более младших версий по-прежнему необходимо использовать формат ICO, а вот с IE11 смело можно переходить на PNG. Для устаревших браузеров Microsoft рекомендует размеры 16х16, 32х32 и 48х48 для фавикона формата ICO.

Начиная с IE9, сайты получили возможность быть закреплёнными в меню или панели задач, а с приходом IE11 и Windows 8.1 появилась возможность создавать закреплённые сайты в виде живых плиток. По умолчанию изображением на плитке будет фавикон, но только не для больших и широких плиток, для которых нужно задавать изображение специального размера. Сделать это можно, добавив теги метаданных в разметку веб-страницы или файл конфигурации браузера.

Сначала давайте рассмотрим первый способ.

Определение фавикона в устройствах Windows с помощью метаданных в <head>:

meta name="msapplication-TileImage" content="images\tileimage.jpg"

Если мы хотим указать иконки для больших плиток, это можно сделать с помощью следующих метаданных:

meta name="msapplication-square70x70logo" content="images/smalltile.png"
meta name="msapplication-square150x150logo" content="images/mediumtile.png"
meta name="msapplication-wide310x150logo" content="images/widetile.png"
meta name="msapplication-square310x310logo" content="images/largetile.png"

Можно указать цвет фона плитки:

meta name="msapplication-TileColor" content=" #009900"

Можно указать имя закреплённого сайта:

meta name="application-name" content="Rick and Morty"

Если нет этих метаданных, то в качестве имени используется title документа.

Можно указать текст дополнительной подсказки, появляющейся при наведении указателя мыши на ярлык закреплённого сайта в меню "Пуск" Windows или на рабочем столе:

meta name="msapplication-tooltip" content="Rick and Morty"

Можно даже определить адрес документа:

meta name="msapplication-starturl" content="./"

И тогда независимо от того, какую страницу пользователь перетащил на панель задач, закреплённый сайт будет открывать указанный  адрес.

Есть ещё много других метаданных, которые, например, определяют цвета кнопок навигации в браузере или делают плитки динамичными.

Начиная с IE11 Windows 8.1 и Edge Windows 10 можно закрепить веб-сайт с помощью файла конфигурации браузера. Это удобно: создать один файл browserconfig.xml и поддерживать, и подключать его на каждой странице, если у нас есть несколько страниц, которые будут использовать одни и те же плитки.

Вызов файла в :

meta name="msapplication-config" content="browserconfig.xml" /

browserconfig.xml

?xml version="1.0" encoding="utf-8"?
browserconfig
    msapplication
        tile
            square70x70logo src="/img/favicons/mstile-70x70.png"/
            square150x150logo src="/img/favicons/mstile-150x150.png"/
            square310x310logo src="/img/favicons/mstile-310x310.png"/
            wide310x150logo src="/img/favicons/mstile-310x150.png"/
            TileColor>#000000
        /tile
	  notification
      	polling-uri  src="notifications/contoso1.xml"/
      	polling-uri2 src="notifications/contoso2.xml"/
      	polling-uri3 src="notifications/contoso3.xml"/
      	frequency30 /frequency
      	cycle>1/cycle
        /notification
    /msapplication
/browserconfig

square70x70logo, square150x150logo, wide310x150logo, square310x310logo — элементы, внутри которых объявляются изображения для различных размеров плитки.

Майкрософт рекомендует брать больший размер изображений в целях поддержки экранов с высокой плотностью пикселей. Желательно, чтобы размер исходного изображения примерно в 1.8 раза превышал размер целевой плитки, чтобы его можно было увеличивать и уменьшать. Например, для 70х70 рекомендуемый размер 128х128, а для широкой плитки 310x150 исходное изображение имеет размер 558x270.

Если плитка сайта статическая, то вышеперечисленных элементов будет достаточно. Если же предполагается динамическая плитка, то необходимо добавить элемент notification. Этот элемент может включать в себя до 5 элементов polling-uri, содержащих в атрибуте src пути к соответствующим xml-файлам уведомлений. Также внутри этого тега содержится элемент <frequency>, значение которого указывает в минутах (интервал между обращениями к сайту за обновлением уведомлений), то есть живая плитка будет обновляться каждые, например, 30 минут. Да, значение не произвольное, а только 30, 60, 360, 720 или 1440.

Наконец, есть внутри тега <notification> ещё элемент <cycle>, отвечающий за способ повторения уведомлений (может принимать значения от 0 до 7). Шаблоны доступны только для средних, широких и больших плиток.

Управляет способом повторения сообщений.
0: (по умолчанию при одном уведомлении) не повторять.
1: (по умолчанию при нескольких уведомлениях) повторять уведомления для плиток всех размеров.
2: повторять уведомления только для средних плиток.
3: повторять уведомления только для широких плиток.
4: повторять уведомления только для больших плиток.
5: повторять уведомления только для средних или широких плиток.
6: повторять уведомления только для средних или больших плиток.
7: повторять уведомления только для широких или больших плиток.

Новый интерфейс Metro предлагает несколько новых принципов дизайна, например, «белые силуэты», используемые большинством предустановленных программ.

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

tile
  visual lang="en-US" version="2"
    binding template="TileWide310x150ImageAndText01"
      image id="1" src="images/image1.png" alt="alt text"/
      text id="1"Text Field 1/text
    /binding
  /visual
/tile

То, что написано в кавычках в атрибуте template - название шаблона. Этот шаблон содержит изображение и небольшой текст. Используется для больших изображений и средних названий. На самом деле, подобных шаблонов очень много: и просто с текстом, и просто с изображением, и с несколькими изображениями, и с несколькими строками текста, и так далее. Большинство шаблонов изображения или текста размещают текст на той же плитке, что и изображение. Но шаблоны с Peek в названии выполняют переключение между изображением и текстом на плитке.

Подробнее о шаблонах можно узнать на официальном сайте.

Mac OS

В Mac OS особо не разгуляешься. Если сохранить сайт на рабочий стол в Mac OS, то значок будет отображаться как скриншот страницы с html кодом. Просто так сайт приложением в Mac OS не сделать, но мы и не будем.

Safari - вот где нам пригодится формат SVG. Чтобы использовать SVG, необходимо указать атрибут rel со значение mask-icon, все элементы SVG должны быть чёрного цвета. Но не стоит пугаться, цвет можно поменять атрибутом color.  Эта SVG-иконка нужна для закрепления вкладки в Safari. А цвет при наведении будет таким, какой мы указали в атрибуте color.

link rel="mask-icon" href="safari-pinned-tab.svg" color="#00а0ff"

Если не указывать эту иконку, то браузер будет отображать первую букву домена нашего сайта.

iOS

Safari в iOS вообще не отображает фавиконы во вкладках, но использует их для закладок, так же как и в Mac OS. В iOS пользователи могут добавить сайт на рабочий стол, и оно будет выглядеть как нативное приложение. Эти ссылки отображаются в виде значков и называются Web Clips.

Для этого нужно добавить rel="apple-touch-icon" и указать размер с помощью атрибута sizes. Каждое устройство нуждается в своем размере иконки. Так как iOS устройств довольно много, и все они имеют свое разрешение экрана, спецификация, разработанная Apple, поддерживает возможность указать несколько тегов с иконками разных размеров.

link rel="apple-touch-icon" sizes="57x57" href="apple-touch-icon-57x57.png"
link rel="apple-touch-icon" sizes="60x60" href="apple-touch-icon-60x60.png"
link rel="apple-touch-icon" sizes="72x72" href="apple-touch-icon-72x72.png"
link rel="apple-touch-icon" sizes="76x76" href="apple-touch-icon-76x76.png"
link rel="apple-touch-icon" sizes="114x114" href="apple-touch-icon-114x114.png"
link rel="apple-touch-icon" sizes="120x120" href="apple-touch-icon-120x120.png"
link rel="apple-touch-icon" sizes="144x144" href="apple-touch-icon-144x144.png"
link rel="apple-touch-icon" sizes="152x152" href="apple-touch-icon-152x152.png"
link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon-180x180.png"

Если значок не соответствует рекомендуемому размеру устройства, используется самая близкая по размеру иконка большего размера, нежели рекомендуемый. Когда пользователь заходит на ваш сайт с iOS устройства, запрашиваются файл apple-touch-icon-precomposed.png, который должен быть оформлен в стиле iOS: закругленные углы, блики, и тень. Если файла с таких названием в корне проекта или rel=«apple-touch-icon-precomposed» нет, будет запрошен apple-touch-icon.png, которому разрешено быть таким, какой он есть, а все эффекты будут наложены самим iOS. Соответственно, нужна иконка под каждый размер. А вот если нет и этих файлов, то на рабочем столе iPhone или iPad будет отображаться не красивая иконка, а миниатюра страницы - ее скриншот.

Ходят слухи что Blackberry будет тоже использовать rel = «apple-touch-icon-precomposed», но возможности проверить, к сожалению, не было.

Подробнее прочитать про актуальные размеры для устройств iOS можно на официальном сайте.

Некоторые могут возразить, что все 9 изображений не очень и нужны. Однако, по крайней мере, основная Apple Touch icon должна быть 180х180. Остальные устройства могут уменьшить изображение. Но некоторые другие платформы тоже используют Apple Touch Icon, поэтому лучше их объявить.

Как бы странно это не звучало, устройства под iOS не единственные, которые ищут Apple Touch Icon. Поскольку они популярнее и встречаются чаще других PNG иконок высоких разрешений, некоторые браузеры, вроде Android Chrome, используют их. Таким образом, лучше их объявлять, это позволит посетителю с совместимым устройством или браузером использовать одну из этих иконок.

В iOS можно указать заголовок веб-приложения. По умолчанию используется значение  тега <title>. Чтобы задать другой заголовок, добавьте метатег на веб-страницу:

 Meta name = "apple-mobile-web-app-title" content = "AppTitle"

Кстати, можно даже установить стиль строки состояния для веб-приложения:

meta name="apple-mobile-web-app-status-bar-style" content="black"

Можно поменять её цвет, можно сделать полупрозрачной. Это тоже повлияет на вид нашего сайта.

Android

Устройства на Android отлично понимают формат PNG, а ещё поддерживают манифест веб-приложения manifest.json, в котором можно прописать все параметры того, как будет вести себя сайт, если его установить на домашний экран. Этот манифест пока, к сожалению, не читают устройства под IOS. А если Android не найдет этот файл, то он будет использовать apple-icon-touch.

Файл манифеста может содержать в себе ряд космических параметров, но тут находятся лишь те, которые нам необходимы для отображения сайта на домашнем экране:

 {
    "name": "Rick and Morty",
    "short_name": "Rick",
    "icons": [
        {
            "src": "/android-chrome-192x192.png",
            "sizes": "192x192",
            "type": "image/png"
        },
        {
            "src": "/android-chrome-512x512.png",
            "sizes": "512x512",
            "type": "image/png"
        }
    ],
    "theme_color": "#b3adad",
    "background_color": "#b3adad",
    "display": "standalone"
}

Краткая расшифровка параметров:

Вызов в :

link rel="manifest" href="manifest.json"

В манифесте есть ещё много других потрясающих параметров, которые сделают из веб-сайта настоящее приложение, но они уже не относятся к теме фавикона.

Автоматизация

В заключение нужно сказать, что все, что мы рассмотрели в рамках данной статьи, не обязательно писать руками, не забывайте про автоматизацию. Существуют сайты, на которых можно быстро сгенерировать все необходимые нам размеры и форматы favicon: http://realfavicongenerator.net/, а при необходимости можно заодно сгенерировать код.

Есть пакеты для сборки и для Gulp, и для Grunt.

Главное помнить, что сегодня favicon - это больше, чем иконка в адресной строке и закладке браузера.

Болотова Ольга, Junior HTML-верстальщик

Наша статья вам помогла? Поддержите нас лайком!

Другие записи

Что первично: контент или дизайн?

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

Стоит ли искать копирайтера на бирже?

Если в штате вашей компании или на аутсорсе нет постоянного копирайтера, а необходимость в написании текстов всё-таки возникает, вы наверняка слышали о биржах статей, а, возможно, не только слышали, но и использовали их. Это был позитивный или негативный опыт? Мнения встречаются разные.

Быть Ильяховым

Не раз приходилось сталкиваться с тем, что в описании вакансии копирайтера в списке требований стоит: «писать как Ильяхов», правда, непонятно, что вкладывается в это понятие. Давайте попробуем разобраться.

Контакты

  • Телефон:
    +7 (812) 425-64-08
  • Наш адрес:
    Санкт-Петербург, Рижская 5, оф. 212
  • Email
    info@pugofka.com
  • Добавляйтесь в друзья
Скачать презентацию