Réponse courte: non, car les styles ne s'appliquent pas au-delà des limites du document.
Cependant, puisque vous avez une <object>
balise, vous pouvez insérer la feuille de style dans le document svg à l'aide d'un script.
Quelque chose comme ça, et notez que ce code suppose que le <object>
a chargé complètement:
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);
Il est également possible d'insérer un <link>
élément pour référencer une feuille de style externe:
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);
Une autre option encore consiste à utiliser la première méthode, à insérer un élément de style, puis à ajouter une règle @import, par exemple styleElement.textContent = "@import url(my-style.css)"
.
Bien sûr, vous pouvez également créer un lien vers la feuille de style à partir du fichier svg, sans faire de script. L'un ou l'autre des éléments suivants devrait fonctionner:
<?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>
Mise à jour 2015: vous pouvez utiliser le plugin jquery-svg pour appliquer des scripts js et des styles css à un SVG intégré.