Pull to refresh

Comments 27

А не проще в Base64 svg загнать, раз уж конвертите файл? Да и занимать он будет как правило меньше в байтах.
Нет. Вся эта свистопляска задумывалась для возможности менять цвет иконки по необходимости. В base64 переменную цвета не подставишь.
а что мешает в svg указать цвет через переменную currentColor fill=«currentColor» и менять дальше по мере вызова svg в css через атрибут color?
Это не работает в случае, когда svg используется как фоновая картинка.
Можно еще post-css использовать. Написать плагин, который делает URI-кодирование для svg строк в background.
Увы, с post-css я не работал. Впрочем, можно и для gulp плагин написать, но, увы, я не настолько хорошо знаю ноду, чтобы плагин не только делал URI-кодирование, но и вставлял переменные в нужные места((
Что-то я не понял о чём статья. Ну да, есть SVG и да, её можно вставить в data URI. Всё?

Почитайте лучше вот этот блог: css.yoksel.ru или этот: pepelsbey.net там тоже про SVG, но глубоко и интересно.
Я столкнулся с конкретной проблемой — манипуляции цветом иконок, заданых через background-image. Для того, чтобы ее решить, мне пришлось активно покопаться в гугле. Вот для тех, кто столкнется с подобной проблемой или просто только начинает осваивать svg я и написал свой вариант решения. Если у вас есть лучше — я с удовольствием вас выслушаю.
Да пожалуйста: не ставить иконку фоном, а сделать обычной картинкой, цветом манипулировать через CSS.
А если этот вариант мне не подходит? Вот так получилась, что у меня примерно 80% иконок на сайте сделаны через фон, спрайтом. Вы мне предлагаете перепиливать шаблоны только для того, чтобы заменить png-спрайт на svg, если я могу просто поменять background в less?
Плюс если иконки вставлять обычной картинкой — то каждая картинка это запрос к серверу. А, наскольк я помню, технология спрайтов была создана как раз для минимизации оных запросов. А мой вариант — это как раз замена спрайту.
Хосподи, чего там «перепиливать»-то? А технология спрайтов и png здесь каким боком? Мы, вроде, SVG обсуждаем. Хотя я и не понял вопроса, всё же отвечаю: загрузите SVG одним файлом, а потом используйте тег USE.
Хосподи, чего там «перепиливать»-то?

Да, действительно, чего там перепиливать… Всего-то пару сотен иконок найти в шаблонах, повставлять инлайново, поправить цсс для каждого элемента. При том, что можно обойтись просто последним пунктом.
Вам же известно что на что менять, да? И вы программист?

Я неоднократно был в ситуации «пара сотен замен по известному алгоритму», ну и что? И ещё буду в таких ситуациях. Вы лучше не распаляйтесь, а прислушайтесь.
Возможно вам стоит пересмотреть подход, так как svg-изображения в данном случае будут рендериться медленнее (настолько, что это становится заметно при кол-ве картинок > 50), чем использование стека svg (symbols) или инлайнового svg. И то, и то легко сделать плагинами для gulp.
С этим нюансом еще не сталкивался, проверю. Спасибо!
С этим способом есть очень много проблем у Firefox (#1, #2, #3, список могу продолжать бесконечно). Некоторые баги висят уже почти 10 лет и не фиксятся. Так что инлайн SVG не такая и плохая идея.
Еще можно использовать svg-спрайт. С ним таких проблем вроде бы нет. Правда цвет уже не поменяешь.
SVG-спрайт вставленный через background-image? Тогда проблем в Firefox и правда нет нет, но появляются проблемы при зуме в Chrome :) И цвета не поменять, да.
padding между картинками в спрайте решает эту проблему)
Получается, svg дублируется в результирующем css столько раз, сколько используется миксин? Неэффективненько.
Не имеет значения, так как gzip.
Недавно сделал точно такую же штуку: заюзал svg чтобы цвет картинки в тон надписи менять.
github.com/antirek/callButton.js/blob/master/callButton.js#L169

тестировал правда сначала только под хром, выкатил на несколько сайтов, а потом пользователи firefox сообщили о досадном косяке, пришлось разобраться с кодированием.
Sign up to leave a comment.

Articles