Я обычно включаю фавикон на свои веб-страницы со значком .ico
, делая что-то вроде этого:
<link rel="icon" href="./favicon.ico" />
Но я видел довольно много веб-сайтов, делающих это с изображениями с расширением .png
и с разными значениями атрибута rel
(например, «значок ярлыка» или «иконка Apple-Touch»).
Какой формат изображения больше подходит для фавиконки в современных браузерах? Каковы преимущества использования одного над другим? И то же самое для атрибута rel
: есть ли разница между «значком» или «значком ярлыка»? (при условии, что «apple-touch-icon» относится к устройствам Apple)
Почти все браузеры уже имеют обширную поддержку различных форматов изображений для отображения значка страницы, а Internet Explorer и Safari (обычные подозреваемые) имеют наименьшую поддержку. Вот список.
край :
.ico
,.png
,.gif
Firefox :
.ico
,.png
,.gif
,.gif
анимированный,.jpg
,.png
анимированный,.svg
Chrome :
.ico
,.png
,.gif
,.gif
анимированный,.jpg
ИП :
.ico
,.png
,.gif
Опера :
.ico
,.png
,.gif
,.gif
живая,.jpg
,.png
живая,.svg
сафари :
.ico
,.png
,.gif
,.jpg
Как вы увидите, почти всегда общим фактором является
ico
,png
иgif
. Оказывается, последний не очень хорош в прозрачности или качестве изображений, как вы можете прочитать в самой Википедии , что оставляет нам только два идеальных типа для этой цели;ico
иpng
.Иконки могут иметь размеры 16×16, 32×32, 48×48 или 64×64 пикселя и 8-битную, 24-битную или 32-битную глубину цвета. Я лично использовал
png
огромные и непропорциональные размеры (в качестве эксперимента), и браузер отрисовал их без проблем, что делает этот формат идеальным (на мой взгляд).Вы можете использовать оба формата одновременно, а также браузеры будут пытаться получить его из корня сайта по умолчанию. Этот процесс выполняется по такому алгоритму.
Если найдены ссылки как для фавиконов PNG, так и для ICO, браузеры, совместимые с PNG, выбирают, какой формат и размер использовать, следующим образом:
Firefox и Safari будут использовать фавиконку, которая появится последней.
Chrome для Mac будет использовать все, что находится в формате ICO, в противном случае он будет использовать все, что имеет размер 32x32 пикселя.
Chrome для Windows будет использовать фавикон, который идет первым, если он имеет размер 16x16 пикселей, в противном случае — ICO.
Если ни одно из вышеперечисленных действий невозможно, оба Chrome будут использовать тот значок, который появится первым, что является полной противоположностью Firefox и Safari. На самом деле Chrome для Mac будет игнорировать 16 x 16 и использовать 32 x 32, а затем масштабировать его до 16 x 16 на устройствах без сетчатки.
Opera выберет иконку совершенно случайно.
Помните, что атрибут
rel
связан с элементом ссылки , который можно использовать для многих других вещей, таких как загрузка стилей, и его синтаксис:Типы ссылок , о которых вы говорите, это
icon
иshorcut
.icon
: определяет ресурс для представления страницы в пользовательском интерфейсе, обычно значок (звуковой или визуальный).По сути, это изображение, которое идентифицирует вашу страницу.
shorcut
: Не входит в стандарт.Он используется по историческим причинам.
В принципе
icon
достаточно, если вы не собираетесь поддерживать старые браузеры на своем сайте.Я бы продолжал использовать
.ico
его, так как это наиболее поддерживаемый формат во всех браузерах. Теперь, насколько я помню, я видел, что на одном из моих занятий в университете атрибут rel="shortcut icon" фавикона был определен Internet Explorer и должен был указывать на связь между icon и page , так было до тех пор, пока Появление HTML5 (правда не знаю, в каком это было году xD) было тогда, когда было заявлено, что этоicon
будет стандартизированный идентификатор, то есть, по моему мнению, только браузеры, не основанные на IE , могут использовать фавикон без потребность вshortcut
.Chrome, Firefox, Opera и Safari принимают значки PNG ... Но Chrome и Safari всегда будут выбирать
.ico
его, если оба существуют .Так как появилось использование PNG, множественные разрешения не включены, их пришлось бы набирать вручную:.
Поэтому не будет вопроса , какой формат наиболее подходящий?
.ico
так как xD всегда будет в приоритетеПоскольку «Сенсорные значки» — это фавиконы для мобильных устройств и планшетов, iOS автоматически добавляет некоторые визуальные эффекты для согласования со значками, встроенными на главный экран (как это происходит со значками приложений). В частности, IOS добавляет:
Закругленные углы
падение тени
светоотражающий блеск
Начиная с iOS 2.0, вы можете избежать добавления этих эффектов, используя precompose :
На самом деле у него много свойств, здесь это очень хорошо объяснено:
https://mathiasbynens.be/notes/touch-icons