Les variables
En CSS on peut créer des propriétés personnalisées qui permettent de stocker des valeurs.
Ces propriétés doivent commencer par '--'.
section {
--couleur: red;
}
On récupère ces valeurs à l'aide de la fonction var().
section h1 {
background-color: var(--couleur);
}
section p {
color: var(--couleur);
}
<section>
<h1>J'ai un fond de couleur --couleur</h1>
<p>J'ai une écriture de couleur --couleur</p>
</section>
J'ai un fond de couleur --couleur
J'ai une écriture de couleur --couleur
Définition : Héritage
Un élément accède à une variable que si une règle l'a défini pour lui ou pour un de ses parents.
section{
--bg-color: red;
}
section.maClasse {
--text-color: green;
}
p {
--border: 2px solid black;
}
h1, p {
background-color: var(--bg-color);
color: var(--text-color);
border: var(--border);
}
<section>
<h1>J'ai un fond de couleur --bg-color</h1>
<p>J'ai un fond de couleur --bg-color et une bordure --border</p>
</section>
<section class='maClasse'>
<h1>J'ai un fond de couleur --bg-color et une écriture de couleur --text-color</h1>
<p>J'ai un fond de couleur --bg-color, une écriture de couleur --text-color et une bordure --border</p>
</section>
J'ai un fond de couleur --bg-color
J'ai un fond de couleur --bg-color et une bordure --border
J'ai un fond de couleur --bg-color et une écriture de couleur --text-color
J'ai un fond de couleur --bg-color, une écriture de couleur --text-color et une bordure --border
--bg-color : toutes les sections et leurs descendants peuvent l'utiliser.
--text-color : toutes les sections de classe maClasse et leurs descendants peuvent l'utiliser.
--border : tous les paragraphes et leurs descendants peuvent l'utiliser.
Les textes ne sont pas en vert car la section n'a pas la classe maClasse. La variable n'est donc pas définie
Définition : Doublon
Comme pour les propriétés classique, en cas de doublon la plus roche de l'élément est prise en compte.
section{
--bg-color: red;
--bg-color: green;
}
p{
--bg-color: blue;
}
h1, p {
background-color: var(--bg-color);
}
<section>
<h1>Deuxième couleur définie par section</h1>
<p>Couleur définie par paragraphe</p>
</section>
Deuxième couleur définie par section
Couleur définie par paragraphe
Définition : Variable globale
Pour définir une variable potentiellement utilisable partout, on utilise la pseudo-classe :root.
:root{
--bg-color: red;
--text-color: green;
}