source : https://www.pierre-giraud.com/liste-selecteurs-css-utilisation/
h1 {
display: flex;
align-items: center;
}
h1::before,
h1::after {
content: "";
height: 40px;
width: 40px;
background-color: #FFA500;
mask-image: url('/mysvg.svg');
-webkit-mask-image: url('/mysvg.svg'); /* Compatibilité Safari */
mask-size: 40px 40px;
mask-repeat: no-repeat;
}
h1::before {
margin-right: .5rem;
}
h1::after {
margin-left: .5rem;
}
3. Explication du code
display: flex; align-items: center;: Centre verticalement le texte et les icônes.&:beforeet&:after: Ajoutent les icônes SVG avant et après le titre.content: "";: Nécessaire pour que les pseudo-éléments s'affichent.heightetwidth: Définit la taille de l’icône.background-color: #FFA500;: Applique la couleur d'affichage.mask-image: url('/mysvg.svg');: Utilise le SVG comme masque.mask-size: 40px 40px; mask-repeat: no-repeat;: Ajuste la taille et empêche la répétition.
4. Résultat et compatibilité
Avec ce code, le titre <h1> est encadré par deux icônes SVG colorées. L'utilisation de mask-image permet une personnalisation facile des couleurs via background-color.
Compatibilité navigateur :
mask-imageest bien pris en charge par Chrome, Edge et Safari.- Pour Firefox, utilisez
-webkit-mask-imageen complément :
mask-image: url('/mysvg.svg');
-webkit-mask-image: url('/mysvg.svg');
5. Améliorations possibles
- Modifier la couleur avec
background-colorpour s'adapter au design du site. - Utiliser un autre SVG pour personnaliser les icônes.
- Ajouter une animation au
hoveravectransitionpour un effet dynamique.
6. Variante : Icône SVG à gauche et ligne à droite
Dans cette version alternative, nous utilisons toujours mask-image pour afficher une icône SVG à gauche du titre <h1>, mais nous ajoutons également une ligne à droite pour un effet visuel plus structuré.
h1 {
display: flex;
align-items: center;
&:before {
margin-right: .5rem;
content: "";
height: 40px;
width: 40px;
background-color: #FFA500;
mask-image: url('/mysvg.svg');
mask-size: 40px 40px;
mask-repeat: no-repeat;
}
&:after {
margin-left: 20px;
flex: 1;
content: "";
height: 1px;
background-color: #FFA500;
}
}
Explication du code :
- Icône SVG à gauche (
&:before) : Identique à la première version, il affiche un SVG coloré. - Ligne à droite (
&:after) :margin-left: 20px;: Espacement entre le titre et la ligne.flex: 1;: Permet d’étirer la ligne pour s’adapter à l’espace disponible.height: 1px; background-color: #FFA500;: Création d’une ligne fine de couleur orange.