Kurze Antwort: Nein, da Stile nicht über Dokumentgrenzen hinweg gelten.
Da Sie jedoch ein <object>
Tag haben, können Sie das Stylesheet mithilfe eines Skripts in das SVG-Dokument einfügen.
So etwas wie das, und beachten Sie, dass dieser Code davon ausgeht, dass der <object>
vollständig geladen wurde:
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);
Es ist auch möglich, ein <link>
Element einzufügen , um auf ein externes Stylesheet zu verweisen:
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);
Eine weitere Option besteht darin, die erste Methode zu verwenden, ein Stilelement einzufügen und dann eine @ import-Regel hinzuzufügen, z styleElement.textContent = "@import url(my-style.css)"
.
Natürlich können Sie auch direkt aus der SVG-Datei auf das Stylesheet verlinken, ohne Skripte zu erstellen. Beides sollte funktionieren:
<?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>
oder:
<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>
Update 2015: Sie können das jquery-svg- Plugin verwenden, um js-Skripte und CSS-Stile auf eine eingebettete SVG anzuwenden.