Respuesta corta: no, ya que los estilos no se aplican a través de los límites del documento.
Sin embargo, dado que tiene una <object>
etiqueta, puede insertar la hoja de estilo en el documento svg usando script.
Algo como esto, y tenga en cuenta que este código asume que se <object>
ha cargado 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);
También es posible insertar un <link>
elemento para hacer referencia a una hoja de estilo externa:
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);
Otra opción más es usar el primer método para insertar un elemento de estilo y luego agregar una regla @import, por ejemplo styleElement.textContent = "@import url(my-style.css)"
.
Por supuesto, también puede vincular directamente a la hoja de estilo desde el archivo svg, sin hacer ningún script. Cualquiera de los siguientes debería funcionar:
<?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>
Actualización 2015: puede usar el complemento jquery-svg para aplicar scripts js y estilos css a un SVG incrustado.