Pull to refresh

Comments 8

Способ №5 – простой (с оговорками).

Подавляющее большинство из тех, кто занимается вёрсткой – используют бандлеры или таск-раннеры. Найдите плагин для своей системы сборки, который пакует все иконки из папки в один svg-спрайт и потратьте немного времени для его настройки.

Встраивать в html можно как-то так:

<svg><use href="путь/до/sprite.svg#social-vk" /></svg>

+ Легко менять размер и цвет.

- Надо разобраться.

Это относится к использованию текстур иконок. Просто через сборщики. Плюсы и минусы на самом деле те же

«Текстур иконок» – это всегда называлось «Спрайты»
Данный способ называется так же — Symbols sprite. И он лишен недостатков обычного, растрового спрайта.
1. Подключая иконку таким образом, мы можем управлять ее цветом через css.
1.1 Играя значениями inherit и currentColor мы можем управлять двухцветными иконками.
1.2 А если заюзать кастомные свойства, то и многоцветные иконки в нашей власти
2. Задав иконке ширину и высоту в «em», мы сможем управлять ее размером через свойство font-size, если это необходимо.
3. Такой спрайт может подгружаться отдельным файлом и, соответственно, закешированным браузером. А для включения в код страницы используются довольно короткие конструкции «use», которое можно еще больше сократить, используя возможности вашего шаблонизатора, или просто написав функцию на php. <?= icon('social-vk') ?>

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

За 7 лет работы я не встречал этот вариант использования на фрилансе и в компаниях, поэтому ваш комментарий очень полезен к данному посту, спасибо👍

Хочу уточнить по поводу способа №1, сами на проекте используем и проблем не возникало.

Если нужно менять цвет иконок извне, можно же задать свойство fill="currentColor" на всю иконку или на её пути, тогда она может принимать цвет окружающего контейнера.

По поводу размера кода - вас смущает кол-во кода или размер бандла? На "сложные" изображения с большим кол-вом элементов можно сделать исключение и экспортнуть пнгшный вариант, но для маленьких иконок код занимает, как правило, 2-3 строчки.

Я не говорю, что вариант плохой) Я говорю, что есть другие варианты, которые, как по мне, лучше.

Касательного первого способа. Внутри svg может быть и path, и polygon, и circle и т.п. И бывает, что внутри них тоже бывает задан цвет с помощью fill. Из-за этого нам приходится делать что, то типа:

.icon,
.icon path,
.icon circle,
.icon polygon {
    fill: coral !important; /* и даже это не всегда срабатывает */
}

Тут и important постоянно придётся писать, и код какой-то костыльный сам по себе😓

В общем, иконки разные попадаются. Всё зависит от вас и проекта

Иконки, в своем шрифте это тренд ✌️уже проверенный временем. Можно покрасить иконку на этапе создания шрифта, а можно вложить в элемент, и применить css filter opacity, saturation и другие, сделав чб, нужным монохромом и с эффектами.. ещё, есть тренд поновее - это Lottie files анимация через JSON data. Есть плагин импорта для фигма.

Sign up to leave a comment.

Articles