SVG-спрайты
В очередной раз, просматривая вакансии на HTML-верстальщика, на предмет поиска темы для новой статьи, в списке требований работодателя, наткнулся на пункт – использовать в верстке SVG-спрайты.
Нам, верстальщикам, не стоит игнорировать требование работодателей, а идти в ногу с современными приёмами в верстке. Что по отдельности обозначают эти модные термины?
SVG – это масштабируемый формат векторной графики. В SVG формате хранится инструкция по построению изображения, по точкам и кривым, в виде текста. А это значит, что его можно открывать и редактировать в любом редакторе кода, работать с ним как с HTML файлом.
Спрайт – это один файл с графикой, состоящий из нескольких маленьких графических файлов, например иконок. Тогда, как SVG-спрайт – это масштабируемый один большой графический файл.
Почему SVG-спрайты – это хорошо?
Почему они так нравятся работодателям и заказчикам? Все дело в скорости загрузки сайта: чем меньше HTTP-запросов к серверу, тем быстрее работает сайт. Чем быстрее работает сайт, тем больше его любят поисковые системы и посетители.
Используя на сайте SVG-спрайты, вы убиваете сразу двух зайцев – получаете меньший вес у графики (SVG формат в разы легче, чем PNG и JPG) и меньше запросов к серверу.
В этом коде целых три HTTP-запроса, на больших экранах появится замыливание и весят иконки в PNG формате больше:
<img src="icons/pinterest.png" alt="">
<img src="icons/twitter.png" alt="">
<img src="icons/facebook.png" alt="">
А здесь один запрос, при масштабирование векторная графика не теряет в качестве и меньше весит.
<svg class="icon">
<use xlink:href="sprite.svg#facebook"></use>
</svg>
Как сделать SVG-спрайт?
- Скачиваем на сайте flaticon две иконки pinterest + github, в формате SVG. Теперь нужно два SVG-файла объединить в один.
- В редакторе кода создадим sprite.svg и пропишем следующий код.
- Значения атрибутов viewBox, копируем из pinterest.svg и github.svg.
- Открываем содержимое двух скачанных файлов и копируем внушительный код отрисовки иконки, тега path и вставляем между тегами <g></g>. Мы вынесли код иконок в отдельный файл sprite.svg.
- Открываем заготовленный HTML файл и вставляем, туда ссылки на id иконок.
<svg display="none" xmlns="http://www.w3.org/2000/svg">
<symbol id="pinterest" viewBox="0 0 455.731 455.731">
<g>
<path ..здесь код отрисовки pinterest../>
</g>
</symbol>
<symbol id="github" viewBox="0 0 512 512">
<g>
<path ..здесь код отрисовки github../>
</g>
</symbol>
</svg>
Важно: Удаляем из path, инлайн стиль с цветом заливки style="fill:#FFFFFF;. Иначе, потом мы не сможем поменять дефолтный цвет иконки на свой, в CSS стилях.
<svg class="icon">
<use xlink:href="sprite.svg#pinterest"></use>
</svg>
<svg class="icon">
<use xlink:href="sprite.svg#github"></use>
</svg>
Теперь, через CSS стили мы можем задавать иконкам любой цвет, размер, а также менять им цвет при наведении. Не стоит паниковать, если иконки не отображаются в Chrome на вашем компьютере, откройте другим браузером или загрузите страницу на сервер.
SVG-спрайты vs иконочных шрифтов
Чем SVG-спрайты лучше иконочных шрифтов, ведь все иконки можно упаковать в один файл и загружать с одним HTTP-запросом? Перечислим некоторые преимущества:
- проще управлять позиционированием
- удобнее делать многоцветные иконки
- можно делать анимированные иконки
Поддержка браузерами
Формат SVG поддерживается всеми современными браузерами и начиная с
IE 11+.
Пример SVG-спрайта
Код на Github: ссылка
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.