Краткий ответ: нет, поскольку стили не применяются за пределами документа.
Однако, поскольку у вас есть <object>
тег, вы можете вставить таблицу стилей в документ svg с помощью скрипта.
Что-то вроде этого, и обратите внимание, что этот код предполагает, что <object>
загружен полностью:
var svgDoc = yourObjectElement.contentDocument;
var styleElement = svgDoc.createElementNS("http://www.w3.org/2000/svg", "style");
styleElement.textContent = "svg { fill: #fff }"; // add whatever you need here
svgDoc.getElementById("where-to-insert").appendChild(styleElement);
Также можно вставить <link>
элемент для ссылки на внешнюю таблицу стилей:
var svgDoc = yourObjectElement.contentDocument;
var linkElm = svgDoc.createElementNS("http://www.w3.org/1999/xhtml", "link");
linkElm.setAttribute("href", "my-style.css");
linkElm.setAttribute("type", "text/css");
linkElm.setAttribute("rel", "stylesheet");
svgDoc.getElementById("where-to-insert").appendChild(linkElm);
Еще один вариант - использовать первый метод, чтобы вставить элемент стиля, а затем добавить правило @import, например styleElement.textContent = "@import url(my-style.css)"
.
Конечно, вы также можете напрямую ссылаться на таблицу стилей из файла svg, не выполняя никаких сценариев. Любое из следующего должно работать:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="my-style.css" type="text/css"?>
<svg xmlns="http://www.w3.org/2000/svg">
... rest of document here ...
</svg>
или:
<svg xmlns="http://www.w3.org/2000/svg">
<defs>
<link href="my-style.css" type="text/css" rel="stylesheet"
xmlns="http://www.w3.org/1999/xhtml"/>
</defs>
... rest of document here ...
</svg>
Обновление 2015: вы можете использовать плагин jquery-svg для применения скриптов js и стилей css к встроенному SVG.