Risposta breve: no, poiché gli stili non si applicano oltre i confini del documento.
Tuttavia, poiché hai un <object>
tag, puoi inserire il foglio di stile nel documento svg usando lo script.
Qualcosa di simile e nota che questo codice presuppone che <object>
sia stato caricato completamente:
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);
È anche possibile inserire un <link>
elemento per fare riferimento a un foglio di stile esterno:
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);
Un'altra opzione è usare il primo metodo, inserire un elemento di stile e quindi aggiungere una regola @import, ad es styleElement.textContent = "@import url(my-style.css)"
.
Ovviamente puoi anche collegarti direttamente al foglio di stile dal file svg, senza fare alcuno script. Uno dei seguenti dovrebbe funzionare:
<?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>
o:
<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>
Aggiornamento 2015: puoi utilizzare il plugin jquery-svg per applicare gli script js e gli stili css a un SVG incorporato.