Spécifier un SVG comme une image de fond et AUSSI le style le SVG dans le CSS?
Est-il possible de spécifier une SVG comme une image de fond et AUSSI le style le SVG dans le même fichier CSS?
Je suis très à l'aise placement, la mise à l'échelle et le découpage des images SVG que ce soit des fichiers individuels ou des sprites, mais je n'ai pas été en mesure de déterminer s'il est possible de style le SVG dans le même fichier CSS comme le définit comme une image d'arrière-plan.
Pseudo CSS, j'aimerais faire la suite pour varier la couleur de forme simple basé sur la classe de l'élément parent:
element1 {
background-image(icon.svg);
}
element1.black .svg-pathclass {
fill: #000000;
}
element1.white .svg-pathclass {
fill: #ffffff;
}
évidemment, cela suppose un chemin dans le SVG avoir de la classe .svg-pathclass
est-ce possible?
Vous devez vous connecter pour publier un commentaire.
Non, ce n'est pas possible. Le SVG doit être préparé dans un seul document (qui peut être un les données URI ou une référence externe fichier) et puis utilisée comme arrière-plan dans un autre fichier.
Vous pouvez utiliser
SVG
etCSS
des masques pour recréer cet effet, puis utilisez normalCSS
de style à l'intérieur de laSVG
, mêmebackground-image
Vous pouvez l'utiliser pour créer des ombres portées en ajoutant un
element
à laDOM
et style, avec une baisse de z-index et le réglage de l'opacité.Espère que ça aide!
Edit: Les Liens
Il est possible pour ceux qui peuvent utiliser les préprocesseurs dans la production, par la "inline" arrière-plan SVG, et peu de SASS
mixins
, qui "tranche" toutsvg
charabia, pour obtenir l'accès aux pièces que vous souhaitez manipuler viaSASS variables
.Dans votre scénario original vous avez un élément
<div class="element1"></div>
,si vous avez besoin d'un
mixin/function
qui inline SVG pour vous. Disons que vous voulez de contrôle de lafill
, donc:où
$svg-content
variable est votre<svg>
des trucs à l'exclusion de<style>
élément auquel vous souhaitez accéder à partir de l'intérieur de lamixin
) et l'emballagesvg
balise, c'est à dire:$svg-content = "<path .... />"
Cette juste besoin d'être inclus avec des valeurs transmises à l'intérieur de:
@include inline-svg(salmon, $svg-content);
De la somme de toute chose, c'est un exemple SASS code:
Je pense que les possibilités sont assez grandes (il y a aussi des limitations d'ici à cette approche). J'ai fait passer un
SASS map
à monmixin
aveccss
styles définis commekey
,value
paire, pour injecter des tas decss
styles à la<style>
partie desvg
.Il est donc techniquement possible, mais nécessitent plus de complexité, mais une fois que vous obtenez ce fait, vous obtiendrez les avantages de la réutilisation de cette
mixin
tout au long de votre projet(s), ce qui est cool .data-mode
attributs par exemple. La demande était d'utiliser un seul format SVG pour faciliter l'interaction avec un minimum d'encombrement. Mais bon exemple