Lorsqu'un SVG est directement inclus dans un document à l'aide de la <svg>
balise, vous pouvez appliquer des styles CSS au SVG via la feuille de style du document. Cependant, j'essaie d'appliquer un style à un SVG qui est intégré (en utilisant la <object>
balise).
Est-il possible d'utiliser quelque chose comme le code suivant?
object svg {
fill: #fff;
}
Réponses:
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:Il est également possible d'insérer un
<link>
élément pour référencer une feuille de style externe: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:
ou:
Mise à jour 2015: vous pouvez utiliser le plugin jquery-svg pour appliquer des scripts js et des styles css à un SVG intégré.
la source
Vous pouvez le faire sans javsscrpt en mettant un bloc de style avec vos styles dans le fichier SVG lui-même.
la source
Si la seule raison d'utiliser la balise pour inclure le SVG est que vous ne voulez pas encombrer votre code source avec le balisage du SVG, vous devriez jeter un oeil aux injecteurs SVG comme SVGInject .
L'injection SVG utilise Javascript pour injecter un fichier SVG en ligne dans votre document HTML. Cela permet un code source HTML propre tout en rendant les SVG entièrement stylables avec CSS. Un exemple de base ressemble à ceci:
la source