Changer la couleur d'une icône au clic avec HTML et CSS
Publié le
Dans cet article, vous apprendrez à changer la couleur d’une icône SVG au clic uniquement avec HTML et CSS. Aucun JavaScript nécessaire.
Dans cet exemple nous nous servirons d'une icône de coeur au format SVG, ainsi que d'une checkbox masquée pour pouvoir modifier sa couleur au clic.
Étape 1 : Créer la structure HTML de l'icône
<div class="svg-container">
<input type="checkbox" id="color-toggle">
<label for="color-toggle">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z"/>
</svg>
</label>
</div>
Explication du Code HTML
<div class="svg-container">: Le conteneur principal de l'icône cliquable, qui englobe à la fois leSVGet la checkbox.<input type="checkbox">: Un élément checkbox qui permet de déterminer si l'icône a été cliquée ou non. Cette case est liée à l'élémentlabel, ce qui permet de basculer son état lors d'un clic.<label for="color-toggle">: Le label est un élément qui associe le clic à l'élémentinput. Lefor="color-toggle"fait en sorte que cliquer sur l'icôneSVGactive ou désactive la case à cocher.<svg>: C'est l'élémentSVGqui définit l'icône, ici un cœur. Ce format vectoriel permet une grande flexibilité et une qualité d'image optimale sur tous les écrans.
Étape 2 : Ajouter des styles CSS
.svg-container {
display: inline-block;
}
.svg-container svg {
width: 24px;
height: 24px;
fill: transparent;
stroke: #000;
cursor: pointer;
transition: fill 0.3s, stroke 0.3s;
}
.svg-container input[type="checkbox"] {
display: none;
}
.svg-container input[type="checkbox"]:checked + label svg {
fill: #E91E63;
stroke: #E91E63;
}
Explication du Code CSS
.svg-container: Définit le conteneur de l'icône.-
.svg-container svg: Spécifie la taille de l'icône SVG (24x24 pixels) et ses couleurs par défaut avec un style de curseur cliquable.
On définit par défaut un remplissage transparentfill: transparentet un contour noirstroke: #000.
La propriététransitionpermet une animation fluide des changements de couleurs. .svg-container input[type="checkbox"]: Cache la checkbox elle-même, car elle est utilisée uniquement comme mécanisme de contrôle pour l'icône..svg-container input[type="checkbox"]:checked + label svg: Cette règle applique la couleur rose#E91E63à l'icône lorsque la checkbox est cochée. L'icône SVG change ainsi de couleur au moment du clic.
Exemple
Essayez de cliquer sur l'icône ci-dessous pour voir sa couleur se modifier.