Есть.
Практически все способы вставки svg в html не позволяют менять цвет при помощи css.
При вставке в разметку вообще нет проблем менять цвет.
fill: red;
stroke: green;
и т.д.
Альтернативный вариант, а разметке задаем в заливку или обводку
currentColor
, в CSS меняем свойство
color
.
Ещё один - использование кастомных свойств.
При вставке прямо в CSS
Маски и фильтры.
mask: url(img.svg) no-repeat center / contain;
background: red;
&:hover {
background: green;
}
Один из вариантов - инлайнить SVG прямо в CSS (в кастомные свойства, чтобы не мусорить в селекторах).
Другой вариант - собираем стек из SVG и используем в url в маске.
Собственно, стеки можно использовать где угодно, в отличие от устаревшего спрайта.
https://telegra.ph/Stack--sprajt-zdorovogo-chelove...