Que sont les variables CSS ? Comment les utiliser ?
Lorsque vous écrivez du code CSS pour votre site, vous pouvez utiliser les propriétés custom CSS (Variables) pour en accélérer le développement. Vous utiliserez ces variables pour définir des propriétés (taille, couleur) qui peuvent être appliquées à divers éléments.
Cela vous donne plus de contrôle sur votre code et le design de votre site. En changeant la valeur d'une variable, celle ci prendra le pas sur la valeur de cette propriété partout ou elle est invoquée.
Cet article vous explique comment utiliser les variables CSS et inclut des exemples pratiques.
Alors commençons !
Déclarer une variable
Les variables peuvent avoir une dimension globale ou locale. Pour définir une variable globalement, il faut utiliser le sélecteur :root.
:root {
--base-font-size: 1.1rem;
}
Le sélecteur :root correspond à la racine du document, qui dans notre exemple est <html>
Pour déclarer une propriété custom CSS (variable), le code commence avec deux tirets (--), les variables sont différentes suivant la casse utilisée par exemple :
--base-font-size
et--Base-Font-Size
sont deux variables différentes.
Pour définir une variable locale, utilisez le sélecteur de l'élément pour lequel vous souhaitez utiliser votre variable.
#first-container {
--background: #ccc;
}
Une fois que vous avez défini votre variable, il est maintenant nécessaire de l'invoquer.
La fonction var()
La fonction var() est utilisée pour insérer la valeur de la variable CSS. La fonction se remplace par la valeur de la variable.
Le code HTML
- Copier et coller le code ci-dessous dans votre éditeur de texte
- Sauvegarder ce fichier en
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/style.css">
<title>CSS Variables</title>
</head>
<body>
<div class="wrapper">
<div class="container-1">
<p class="first">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iste doloribus dolorum eaque veritatis quia quod?</p>
<button type="button">Click here!</button>
</div>
<div class="container-2">
<p class="second">Lorem ipsum dolor sit amet consectetur adipisicing elit. Libero, dolorem. Reprehenderit mollitia quos quia qui.</p>
<button type="button">Click here!</button>
</div>
<div class="container-3">
<p class="third">Lorem ipsum dolor sit amet consectetur adipisicing elit. Nisi dolor reprehenderit, ad sunt aperiam officiis!</p>
<button type="button">Click here!</button>
</div>
</div>
</body>
</html>
Le code CSS
- Créez un fichier
style.css
dans le même répertoire qu'index.html
- Copiez le code suivant et sauvegardez votre fichier
/* Global styles */
.wrapper, div {
padding: 1rem;
}
div {
margin: 1rem auto;
}
/* DEFINITION OF VARIABLES */
:root {
/* Color palette */
--primary: #007bff;
--success: #28a745;
--warning: #ffc107;
--white: #f9f9f9;
--light-grey: #d8d8d8;
/* Borders */
/* It is possible to use an already declared variable within the definition of another variable */
--border-primary: 1px solid var(--primary);
--border-success: 1px solid var(--success);
--border-warning: 1px solid var(--warning);
}
/* VARIABLES */
/* Wrapper */
.wrapper {
background-color: var(--light-grey);
}
/* First Container */
.container-1 {
/* The var() function replaces itself with the value of the variable */
border: var(--border-primary);
color: var(--primary);
background-color: var(--white);
}
.container-2 {
/* The var() function replaces itself with the value of the variable */
border: var(--border-success);
color: var(--success);
background-color: var(--white);
}
.container-3 {
/* The var() function replaces itself with the value of the variable */
border: var(--border-warning);
color: var(--warning);
background-color: var(--white);
}
.container-1 button {
background-color: var(--primary);
color: var(--white);
}
.container-2 button {
background-color: var(--success);
color: var(--white);
}
.container-3 button {
background-color: var(--warning);
color: var(--white);
}
button { border-radius: 5px;
}
Il faut noter que :
- Créer une palette de couleur est une chose facile
- Il est possible d'utiliser une variable dans la définition d'une autre variable, telles que celles qui définissent la couleur et les bordures
- les variables sont héritées, la propriété color de l'élément
.container-*
modifie ses enfants directs. dans notre cas l'élément<p>
Pour prendre le pas sur une variable, il faut la définir à l'intérieur de son container, pour la rendre plus spécifique.
- Editez le code CSS :
button {
border-radius: 5px;
/* Overriding a global variable */
--primary: #021b35;
}
Variables & Media Queries
Les variables peuvent être héritées et modifiées dans les requêtes CSS media queries
- Ajoutez ce code aux variables :
:root {
/* Color palette */
--primary: #007bff;
--success: #28a745;
--warning: #ffc107;
--white: #f9f9f9;
--light-grey: #d8d8d8;
/* Borders */
/* It is possible to use an already declared variable within the definition of another variable */
--border-primary: 1px solid var(--primary);
--border-success: 1px solid var(--success);
--border-warning: 1px solid var(--warning);
/* Width of the wrapper 1000px / 90% on smaller devices */
--wrapper-width: 1000px;
}
Nous avons défini les bases pour l'élément wrapper
. Nous pouvons maintenant appliquer ces variables à la propriété de largeur de .wrapper
- Ajoutez ce code à la fin de votre fichier CSS :
.wrapper {
width: var(--wrapper-width); margin: 0 auto;
}
Pour définir une "media query" destinée aux écrans de moins de 1100px de large, écrivez le code CSS suivant :
@media screen and (max-width: 1100px) {
.wrapper {
--wrapper-width: 90%;
}
}
La nouvelle définition de cette variable à l'intérieure de la media query prend le pas sur sa valeur initiale. Notez aussi que cette variable est disponible dans le DOM, elle peut donc être retrouvée et modifiée avec JS. Ce qui n'est pas possible avec des variables CSS preprocessors.
En résumé
Les variables sont utiles pour organiser et gérer des plus simples à de très larges fichiez de propriétés CSS. Elles réduisent les répétitions et par conséquents les risques d'erreurs. Les variables CSS sont dynamiques et peuvent être modifiées lors de l'exécution. Il est aussi facile de modifier des templates, un site ou une application dynamiquement avec des variables CSS. Elles permettent d'assigner des valeurs à une propriété CSS avec un nom personnalisé. Les variables suivent les règles communes de cascades du CSS, il est ainsi possible de définir la même propriété à des niveaux spécifiques différents.
J'espère que vous avez aimé ce tutoriel.
Cet article est une traduction libre de : What are CSS Variables and How to Use Them de Jorge Montoya pour OSTraining.