Как генерировать svg спрайт (вида data:image/svg+xml) в gulp для css (scss)?

Друзья, всем привет!

Использую svg в css (scss) вот таким вот образом:
.class {
   background: url('data:image/svg+xml,%3Csvg%20xmlns%3D%22ht...') center no-repeat;
   background-size: contain;
   height: 30px;
   width: 30px;
}


Такой подход нравится тем, что svg файла, как такового нет (нет лишнего запроса), но самое главное, что я могу менять свойства height и width и иконка будет масштабироваться.
На данный момент проблема в том, что мне приходится обрабатывать svg файл вручную, т.е. понятное дело, что привести иконку в порядок нужно будет в любом случае (например, задать цвет), но дальше: открыть в редакторе, скопировать код, прогнать его через URL Decoder/Encoder и только потом вставить в css, это занимает очень много времени. Такой подход использования svg спрайта встречаю на очень многих сайтах (причем довольно серьезных), даже элементарно на вот этом и, думаю, вряд ли они такую работу делают вручную, вроде меня.

Использую еще svg спрайт в html, а потом через use вызываю, но такой подход не нравится, css мне больше по душе.

На данный момент присмотрел gulp плагин gulp-svg-sprite но что-то не могу настроить для использования в том виде, который описал выше.
Может кто знает другие плагины, позволяющие это реализовать, либо может тот же svg-sprite всё-таки позволяет это сделать, а я просто невнимателен (читай рукожоп)?
Спасибо!
  • Вопрос задан
  • 2578 просмотров
Решения вопроса 1
AlexCSS
@AlexCSS
Font-end and WordPress developer
Да, отличный подход. Особенно для небольших иконок.

Частично в решение вопроса может помочь это https://codepen.io/alexcss/pen/aVLjLx
Там есть scss миксин, который автоматом декодирует SVG код в фоновое изображение.
Работает такой метод везде. Согласно этой статье https://codepen.io/tigt/post/optimizing-svgs-in-da... не
все URL Decoder'ы подходящим образом кодируют SVG.

А автоматом подставлять туда исходники svg файлов, например с папки, можно настроить через gulp.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы