#html #css #svg #firefox #microsoft-edge
#HTML #css #svg #firefox #microsoft-edge
Вопрос:
Я получаю странное поведение в Firefox (78.5.0esr) в отношении содержимого SVG, встроенного в HTML через <img>
тег. SVG содержит ссылку на внешнюю таблицу стилей с помощью директивы CSS «@import», например:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-64 -64 128 128">
<defs>
<style type="text/css"><![CDATA[
@import url('../css/rds.css');
path {
stroke: var(--error-color);
}
]]></style>
</defs>
<path d="M -48 -48 L 48 48 M -48 48 L 48 -48"/>
</svg>
Теперь, если я открою этот SVG напрямую в Firefox, кажется, все работает нормально, правила из rds.css импортируются и выполняются нормально.
Но если я вставлю этот SVG в HTML-страницу с помощью тега img следующим образом:
<img src="delete.svg"/>
сам SVG, похоже, был правильно загружен на страницу, но @import внутри CSS SVG, похоже, был проигнорирован.
Если я удалю директиву «@import» и помещу код CSS непосредственно в SVG, он будет отображаться нормально во всех контекстах.
Интересно, что то же самое, похоже, происходит в MS Edge. Я что-то здесь упускаю? Существует ли параметр безопасности, предотвращающий загрузку вторично связанного содержимого?
Ответ №1:
<img>
файлы должны быть полностью автономными по соображениям конфиденциальности, то есть они не могут ссылаться на какие-либо внешние файлы.
Вам нужно будет включить все встроенные стили в сам файл, если вы хотите, чтобы это работало, поскольку @import не будет работать в контексте изображения.