Comment appliquer un style à un intégrés SVG?
Quand un SVG est directement inclus dans un document à l'aide de la <svg>
balise, vous pouvez appliquer des styles CSS pour le SVG via le document de la feuille de style. Cependant, je suis en train d'appliquer un style à un SVG qui est incorporé (à l'aide de la <object>
tag).
Est-il possible de se servir de quelque chose comme le code suivant?
object svg {
fill: #fff;
}
- Je suis venu avec une légère façon de faire ce qui serait idéal pour ce que vous essayez de faire. Voir ce Q&A: stackoverflow.com/questions/11978995/...
- Voici réponse qui a effectivement fait le travail (à partir de la Manipulation externe svg fichier de propriétés de style avec CSS.)
Vous devez vous connecter pour publier un commentaire.
Réponse courte: non, car les styles ne s'appliquent pas à travers les limites du document.
Cependant, puisque vous avez un
<object>
tag vous pouvez insérer la feuille de style dans le document svg à l'aide d'un script.Quelque chose comme cela, et notez que ce code suppose que le
<object>
a chargé entièrement:Il est également possible d'insérer un
<link>
élément pour faire référence à une feuille de style externe:Encore une autre option est d'utiliser la première méthode, pour insérer un élément de style, et puis ajouter un @import de la règle, de l'e.g
styleElement.textContent = "@import url(my-style.css)"
.Bien sûr, vous pouvez directement le lien vers la feuille de style à partir du fichier svg trop, sans faire de script. De la façon suivante devrait fonctionner:
ou:
Mise à jour 2015: vous pouvez utiliser jquery-svg plugin pour appliquer les scripts javascript et feuilles de style css intégré SVG.
var svgDoc = yourObjectElement.contentDocument;
renvoie la valeur null. La seule façon que j'ai réussi à obtenir ce travail a été avec une charge d'écoute sur l'Élément et à l'intérieur de d'obtenir les contentDocument comme illustré ici: stackoverflow.com/questions/2753732/...Vous pouvez le faire sans javsscrpt en mettant un bloc de style avec vos styles à l'intérieur du fichier SVG lui-même.
Si la seule raison de l'aide de la balise pour les suivants le SVG, c'est que vous ne voulez pas encombrer votre code source avec le balisage du SVG, vous devriez jeter un oeil à SVG injecteurs comme SVGInject.
SVG injection utilise Javascript pour injecter un fichier SVG inline dans votre document HTML. Cela permet de nettoyer le code source HTML, tout en rendant le SVGs entièrement styleable avec les CSS. Un exemple de base ressemble à ceci: