Когда SVG напрямую включен в документ с помощью <svg>
тега, вы можете применить стили CSS к SVG через таблицу стилей документа. Однако я пытаюсь применить стиль к встроенному SVG (с помощью <object>
тега).
Можно ли использовать что-нибудь вроде следующего кода?
object svg {
fill: #fff;
}
Ответы:
Краткий ответ: нет, поскольку стили не применяются за пределами документа.
Однако, поскольку у вас есть
<object>
тег, вы можете вставить таблицу стилей в документ svg с помощью скрипта.Что-то вроде этого, и обратите внимание, что этот код предполагает, что
<object>
загружен полностью:Также можно вставить
<link>
элемент для ссылки на внешнюю таблицу стилей:Еще один вариант - использовать первый метод, чтобы вставить элемент стиля, а затем добавить правило @import, например
styleElement.textContent = "@import url(my-style.css)"
.Конечно, вы также можете напрямую ссылаться на таблицу стилей из файла svg, не выполняя никаких сценариев. Любое из следующего должно работать:
или:
Обновление 2015: вы можете использовать плагин jquery-svg для применения скриптов js и стилей css к встроенному SVG.
источник
Вы можете сделать это без javsscrpt, поместив блок стилей с вашими стилями внутри самого файла SVG.
источник
Если единственная причина использования тега для включения SVG заключается в том, что вы не хотите загромождать исходный код разметкой из SVG, вам следует взглянуть на инжекторы SVG, такие как SVGInject .
Внедрение SVG использует Javascript для встраивания файла SVG в ваш HTML-документ. Это позволяет получить чистый исходный код HTML, делая при этом SVG полностью стилизованными с помощью CSS. Базовый пример выглядит так:
источник