Resposta curta: não, pois os estilos não se aplicam aos limites do documento.
No entanto, uma vez que você tem um <object>
tag, pode inserir a folha de estilo no documento SVG usando o script.
Algo parecido com isso, e observe que este código assume que o <object>
foi totalmente carregado:
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);
Também é possível inserir um <link>
elemento para fazer referência a uma folha 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);
Outra opção é usar o primeiro método, para inserir um elemento de estilo e, em seguida, adicionar uma regra @import, por exemplo styleElement.textContent = "@import url(my-style.css)"
.
Claro que você também pode criar um link direto para a folha de estilo do arquivo svg, sem fazer nenhum script. Qualquer um dos seguintes deve 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>
ou:
<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>
Atualização 2015: você pode usar o plugin jquery-svg para aplicar scripts js e estilos css a um SVG incorporado.