Je veux utiliser cette technique http://css-tricks.com/svg-fallbacks/ et changer la couleur svg mais jusqu'à présent je n'ai pas pu le faire. Je mets ça dans le css mais mon image est toujours noire, quoi qu'il arrive. Mon code:
.change-my-color {
fill: green;
}
<svg>
<image class="change-my-color" xlink:href="https://svgur.com/i/AFM.svg" width="96" height="96" src="ppngfallback.png" />
</svg>
Réponses:
Vous ne pouvez pas changer la couleur d'une image de cette façon. Si vous chargez SVG en tant qu'image, vous ne pouvez pas changer la façon dont il est affiché en utilisant CSS ou Javascript dans le navigateur.
Si vous voulez changer votre image SVG, vous devez le charger en utilisant
<object>
,<iframe>
ou à l' aide en<svg>
ligne.Si vous souhaitez utiliser les techniques de la page, vous avez besoin de la bibliothèque Modernizr, où vous pouvez vérifier la prise en charge SVG et afficher conditionnellement ou non une image de secours. Vous pouvez ensuite intégrer votre SVG et appliquer les styles dont vous avez besoin.
Voir:
Afficher l'extrait de code
Vous pouvez incorporer votre SVG, étiqueter votre image de secours avec un nom de classe (
my-svg-alternate
):Et en CSS, utilisez la
no-svg
classe de Modernizr (CDN: http://ajax.aspnetcdn.com/ajax/modernizr/modernizr-2.7.2.js ) pour vérifier le support SVG. S'il n'y a pas de support SVG, le bloc SVG sera ignoré et l'image sera affichée, sinon l'image sera supprimée de l'arborescence DOM (display: none
):Ensuite, vous pouvez changer la couleur de votre élément en ligne:
la source
object
styliser les SVG intégrés à partir du document d'hébergement.Réponse 2020
Le filtre CSS fonctionne sur tous les navigateurs actuels
Pour changer la couleur de n'importe quel SVG
<img>
balise.Par exemple, la sortie pour
#00EE00
estfilter
dans cette classe.la source
brightness(0) saturate(100%)
au début de la liste des filtres le rendra d'abord 100% noir, ce qui permet aux autres filtres de le changer à la bonne couleur.Pour changer la couleur d'un SVG, vous pouvez directement changer le code svg en ouvrant le fichier svg dans n'importe quel éditeur de texte . Le code peut ressembler au code ci-dessous
Vous pouvez observer qu'il ya des balises XML comme chemin, cercle, polygone etc . Là, vous pouvez ajouter votre propre couleur à l'aide de l' attribut de style . Regardez l'exemple ci-dessous
Ajoutez l'attribut style à toutes les balises afin d'obtenir votre SVG de la couleur souhaitée
la source
fill
comme celui-cifill = "#AB7C94"
:? Je ne sais pas pourquoi l'style
attribut est nécessaireAjout d'une page de test - pour colorer SVG via les paramètres de filtre:
PAR EXEMPLE
filter: invert(0.5) sepia(1) saturate(5) hue-rotate(175deg)
Téléchargez et coloriez votre SVG - Jsfiddle
A pris l'idée de: https://blog.union.io/code/2017/08/10/img-svg-fill/
la source
.custom-disabled > svg {filter:invert(0.2) sepia(1) saturte(0) hue-rotate(0);}
a fait juste le travail dont j'avais besoin pour désactiver l'icône.Uniquement SVG avec des informations de chemin . vous ne pouvez pas faire cela à l'image .. comme chemin, vous pouvez changer les informations de trait et de remplissage et vous avez terminé. comme Illustrator
donc: via CSS, vous pouvez remplacer la
fill
valeur du cheminmais si vous voulez un moyen plus flexible comme vous voulez le changer avec un texte lorsque vous avez un effet de survol en cours. utilisez
la source
la manière la plus simple serait de créer une police à partir du SVG en utilisant un service comme https://icomoon.io/app/#/select ou autre. téléchargez votre SVG, cliquez sur "générer la police", incluez les fichiers de police et le CSS dans votre côté et utilisez-le et stylisez-le comme n'importe quel autre texte. Je l'utilise toujours comme ça car cela rend le style beaucoup plus facile.
EDIT: Comme mentionné dans l' article commenté par @ CodeMouse92, les polices d'icônes gâchent les lecteurs d'écran (et sont peut-être mauvaises pour le référencement). Alors, tenez-vous plutôt aux SVG.
la source
Le masque SVG sur un élément de boîte avec une couleur d'arrière - plan entraînera:
Remarque - Les masques SVG ne sont pas pris en charge dans les navigateurs Internet Explorer
la source
Vous pouvez changer la coloration SVG avec css si vous utilisez des astuces. J'ai écrit un petit script pour ça.
le code ci-dessus peut ne pas fonctionner correctement, je l'ai implémenté pour les éléments avec une image d'arrière-plan svg qui fonctionne presque de la même manière. Mais de toute façon, vous devez modifier ce script pour l'adapter à votre cas. j'espère que cela a aidé.
la source
Ciblez le chemin dans le svg:
Vous pouvez faire en ligne, comme:
Ou
la source
Pour changer simplement la couleur du svg:
Allez dans le fichier svg et sous styles, mentionnez la couleur de remplissage.
la source
Si vous voulez faire ceci à un svg en ligne qui est, par exemple, une image d'arrière-plan dans votre css:
bien sûr, remplacez le ... par votre code d'image en ligne
la source
Par exemple, dans votre HTML:
Utilisez jQuery:
la source
En fait, il existe une solution beaucoup plus flexible à ce problème: l'écriture d'un composant Web qui corrigera SVG en tant que texte lors de l'exécution. Également publié dans gist avec un lien vers JSFiddle
la source
manière la plus courte compatible avec Bootstrap, pas de JavaScript:
et l'utiliser comme:
la source
Ouvrez votre image à l'aide d'un navigateur, cliquez avec le bouton droit sur l'image, cliquez sur Afficher la source de la page et vous verrez la balise svg de l'image. Faites face et collez dans votre html, puis changez le remplissage à la couleur de votre choix
la source
Ajoutez simplement fill: "desireColor" dans la balise svg de l'image: exemple:
la source