Krótka odpowiedź: nie, ponieważ style nie mają zastosowania w obrębie granic dokumentu.
Ponieważ jednak masz znacznik <object>
, możesz wstawić arkusz stylów do dokumentu svg przy użyciu skryptu.
Coś takiego, i pamiętać, że kod ten zakłada, że <object>
został załadowany w pełni:
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);
Możliwe jest również, aby wstawić element <link>
odwołać arkusza stylów zewnętrzna:
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);
Jeszcze inną opcją jest użycie pierwszej metody, wstawienie elementu stylu, a następnie dodanie reguły @import, np. styleElement.textContent = "@import url(my-style.css)"
.
Oczywiście można również bezpośrednio połączyć się z arkuszem stylów z pliku svg, bez wykonywania żadnych skryptów. Każda z poniższych powinno działać:
<?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>
czyli
<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>
Aktualizacja 2015: dla zastosowania js skrypty i style CSS osadzonego SVG można użyć jquery-svg wtyczki.
wymyśliłem lekkiej drodze do tego, które działają świetnie za to, co staramy się robić zrobić. Zobacz te pytania i odpowiedzi: http://stackoverflow.com/questions/11978995/how-to-change-color-of-svg-image-using-css-jquery-svg-image-replacement/ –