Почему вы заключаете HTML-тег img в элемент svg ??- Майкл Маллани
HTML-тег <img>
должен быть выведен из SVG.Только определение фильтра должно оставаться внутри SVG.
Ниже приведен пример использования отдельного файла SVG
, загруженного на сервер, который добавляется в разметку HTML с помощью тега <img>
Фильтр применяется к файлу svg <feFlood flood-color =" #35B62E"/>
для окрашивания в зеленый цвет
Я использовал <feOffset dy =" 150 ">
, чтобы частично закрасить фигуру.
img {
filter:url(#filter1);
}
<img src="https://svg-art.ru/files/Face.svg" width="371" height="348" >
<svg version="1.1" width="371" height="348" viewBox="0 0 371 348" xmlns="http://www.w3.org/2000/svg">
<defs>
<filter id="filter1" x="0%" y="0%">
<feFlood flood-color="#35B62E" />
<feOffset dy="150">
</feOffset>
<feComposite operator="in" in2="SourceGraphic" />
<feComposite operator="over" in2="SourceGraphic" />
</filter>
</defs>
</svg>
Ниже приведен пример использования двух фильтров <feFlood flood-color
для изменения цвета при наведении курсора
img {
filter:url(#filter_G);
}
img:hover {
filter:url(#filter_R);
}
<img src="https://svg-art.ru/files/Face.svg" width="371" height="348" >
<svg version="1.1" width="371" height="348" viewBox="0 0 371 348" xmlns="http://www.w3.org/2000/svg">
<defs>
<filter id="filter_G" x="0%" y="0%">
<feFlood flood-color="#35B62E" />
<feOffset dy="150">
</feOffset>
<feComposite operator="in" in2="SourceGraphic" />
<feComposite operator="over" in2="SourceGraphic" />
</filter>
<filter id="filter_R" x="0%" y="0%">
<feFlood flood-color="red" />
<feOffset dy="65">
</feOffset>
<feComposite operator="in" in2="SourceGraphic" />
<feComposite operator="over" in2="SourceGraphic" />
</filter>
</defs>
</svg>