Comment utiliser le CSS pour styliser une page web

CSS signifie Cascading Style Sheets (feuilles de style en cascade). Il définit comment les éléments d’une page web doivent être affichés. Sa syntaxe est simple et directe. Le CSS n’est pas un langage de programmation : il n’inclut ni conditions, ni boucles, ni fonctions. Il s’agit simplement d’un texte structuré qui indique au navigateur comment présenter les éléments à l’utilisateur.

Avant de commencer, assurez-vous d’avoir complété les sections précédentes, en particulier 1. Premiers pas 🧑‍🎓, 2. Aller plus loin 🚀, ainsi que la leçon sur le HTML.

Vous voulez être prévenu quand de nouvelles leçons sont publiées ? Abonnez-vous à l'infolettre ✉️ et donnez une ⭐ au cours sur GitHub pour me garder motivé ! Cliquez ici pour me contacter.

Installation

Vous n’avez rien à installer pour cette leçon. Il vous suffit d’ouvrir un dossier vide dans VS Code, de créer un fichier index.html, puis d’y copier et coller le code de la leçon précédente.

index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>My Alma Mater</title>
</head>
<body>
    <h1>My Alma Mater: UQAM</h1>
    <p>I earned my bachelor's degree in journalism at Université du Québec à Montréal (UQAM).</p>
    <img src="university.jpg" alt="UQAM campus with Montreal’s downtown skyline in the background."/>
    <p>The picture above comes from Wikimedia. You can find it <a href="https://commons.wikimedia.org/wiki/File:UQAM-Judith-Jasmin.jpg">here</a> along with its license.</p>
</body>
</html>

Une capture d'écran montrant une page HTML de base.

CSS en ligne (inline styles)

Vous pouvez styliser directement des éléments HTML spécifiques en utilisant l’attribut style. La syntaxe CSS est composée de propriétés associées à des valeurs.

Par exemple, nous pouvons définir la color du premier paragraphe en blue et celle du second en red. Nous pouvons également modifier le font-weight pour le mettre en bold.

Notez qu’il existe de nombreuses façons de définir les couleurs en code. Ici, nous utilisons des noms de couleurs. Il existe environ 140 noms de couleurs reconnus que les navigateurs comprennent. Si vous souhaitez en savoir plus sur les couleurs, consultez ce tutoriel.

Dans l’attribut style, chaque paire propriété-valeur doit être séparée par un ;.

index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>My Alma Mater</title>
</head>
<body>
    <h1>My Alma Mater: UQAM</h1>
    <p style="color:blue; font-weight: bold;">I earned my bachelor's degree in journalism at Université du Québec à Montréal (UQAM).</p>
    <img src="university.jpg" alt="UQAM campus with Montreal’s downtown skyline in the background."/>
    <p style="color:red; font-weight: bold;">The picture above comes from Wikimedia. You can find it <a href="https://commons.wikimedia.org/wiki/File:UQAM-Judith-Jasmin.jpg">here</a> along with its license.</p>
</body>
</html>

Une capture d'écran montrant du CSS en ligne.

💡

VS Code reconnaît certaines propriétés et valeurs CSS de base, comme les couleurs. Ici, il a ajouté un petit carré affichant la couleur sélectionnée. Cependant, cela ne fait pas partie du code : c’est simplement un guide visuel fourni par l’éditeur de code.

Utilisation de l’élément style

Sélectionner des éléments

Le CSS en ligne peut être utile pour des projets simples et rapides, mais il devient difficile à maintenir pour des projets plus complexes ou à long terme. Si vous souhaitez conserver votre CSS dans le fichier HTML, il est préférable de tout regrouper dans une balise style.

Avec le CSS en ligne, le navigateur sait exactement quel élément est stylisé. Cependant, lorsque l’on utilise l’élément style, il faut employer des sélecteurs pour indiquer quels éléments doivent être stylisés et comment.

La syntaxe suit cette structure : le sélecteur est défini en premier, suivi des paires propriété-valeur, placées entre des accolades. Les paires doivent être séparées par un ;. Par exemple, le code ci-dessous indique au navigateur d’appliquer un style en gras à tous les éléments p de la page.

p {
    font-weight: bold;
}
💡

L’indentation ci-dessus sert uniquement à rendre le CSS plus lisible pour nous, les humains. Les navigateurs n’en ont pas besoin et se basent uniquement sur la structure du code. De nombreux développeurs utilisent des outils pour minifier leur CSS en supprimant les espaces et les retours à la ligne afin de créer des fichiers plus légers, qui se chargent plus rapidement et consomment moins de bande passante. Nous aborderons ce sujet dans une autre leçon.

Sélecteurs id

Mettons à jour notre code précédent pour utiliser l’élément style. Comme il sert uniquement à indiquer au navigateur comment afficher les éléments, nous le plaçons dans l’élément head.

index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>My Alma Mater</title>
    <style>
        p {
            font-weight: bold;
        }
 
        #first-paragraph {
            color: blue;
        }
 
        #second-paragraph {
            color: red;
        }
    </style>
</head>
<body>
    <h1>My Alma Mater: UQAM</h1>
    <p id="first-paragraph">I earned my bachelor's degree in journalism at Université du Québec à Montréal (UQAM).</p>
    <img src="university.jpg" alt="UQAM campus with Montreal’s downtown skyline in the background."/>
    <p id="second-paragraph">The picture above comes from Wikimedia. You can find it <a href="https://commons.wikimedia.org/wiki/File:UQAM-Judith-Jasmin.jpg">here</a> along with its license.</p>
</body>
</html>

Une capture d'écran montrant du CSS dans un élément style.

Avez-vous remarqué les sélecteurs #first-paragraph (ligne 12) et #second-paragraph (ligne 16) ? Et les attributs id dans le code HTML (lignes 23 et 25) ?

Puisque nous voulons que tous les éléments p soient en gras, nous utilisons le sélecteur p avec font-weight: bold. Cependant, nous voulons également que le premier paragraphe soit bleu et le second rouge, donc nous utilisons des id.

Dans le HTML, nous attribuons les id first-paragraph et second-paragraph. Cela nous permet de cibler ces paragraphes spécifiques en CSS à l’aide des sélecteurs #first-paragraph et #second-paragraph (notez le symbole #).

Gardez à l’esprit qu’un id doit être unique. Il ne doit apparaître qu’une seule fois par page.

Sélecteurs class

Les sélecteurs d’éléments (comme p) ciblent tous les éléments correspondants sur la page. Par exemple, tous les éléments p peuvent être stylisés en gras.

À l’inverse, les id sont utiles pour cibler un seul élément spécifique.

Mais que faire si vous souhaitez styliser plusieurs éléments sans affecter tous les autres ? La solution est d’utiliser les sélecteurs class.

Par exemple, ajoutons un troisième paragraphe et supposons que nous voulons que les deux derniers paragraphes soient rouges.

index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>My Alma Mater</title>
    <style>
        p {
            font-weight: bold;
        }
 
        #first-paragraph {
            color: blue;
        }
 
        .red-text {
            color: red;
        }
    </style>
</head>
<body>
    <h1>My Alma Mater: UQAM</h1>
    <p id="first-paragraph">I earned my bachelor's degree in journalism at Université du Québec à Montréal (UQAM).</p>
    <img src="university.jpg" alt="UQAM campus with Montreal’s downtown skyline in the background."/>
    <p class="red-text">The picture above comes from Wikimedia. You can find it <a href="https://commons.wikimedia.org/wiki/File:UQAM-Judith-Jasmin.jpg">here</a> along with its license.</p>
    <p class="red-text">Montreal is a wonderful city. You should visit it!</p>
</body>
</html>

Une capture d'écran montrant du CSS avec des classes.

Dans le code ci-dessus, nous avons remplacé l’attribut id et la propriété second-paragraph par un attribut class avec la valeur red-text.

Nous pouvons maintenant utiliser le sélecteur de classe .red-text (notez le .) pour modifier le style de tous les éléments ayant cette class (ici, les deux derniers paragraphes).

Vous pouvez attribuer une classe à autant d’éléments que nécessaire.

En savoir plus sur les sélecteurs

Si vous souhaitez remplacer la valeur d’une propriété, il est important de comprendre la hiérarchie des sélecteurs :

  • Les styles en ligne remplacent les styles définis par d’autres sélecteurs.
  • Les sélecteurs id remplacent les styles définis par les sélecteurs de class et d’éléments.
  • Les sélecteurs de class remplacent les styles définis par les sélecteurs d’éléments.
  • Les sélecteurs d’éléments sont les moins spécifiques.

De plus, vous pouvez combiner plusieurs sélecteurs pour un style plus précis. En savoir plus ici.

Utilisation d’un fichier .css

À mesure qu’un projet web se développe, ses styles peuvent devenir assez complexes. Pour garder le code organisé et plus facile à maintenir, il est préférable de séparer le CSS dans un fichier dédié et de le lier au fichier HTML.

Dans cet exemple, nous avons créé un nouveau fichier appelé style.css et déplacé tout ce qui se trouvait auparavant entre les balises <style> et </style> vers ce fichier.

style.css
p {
    font-weight: bold;
}
 
#first-paragraph {
    color: blue;
}
 
.red-text {
    color: red;
}

Dans le fichier HTML, nous avons supprimé les balises <style> et </style> et ajouté un lien vers le nouveau fichier .css. Cela indique au navigateur d’appliquer les styles depuis le fichier externe.

index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>My Alma Mater</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <h1>My Alma Mater: UQAM</h1>
    <p id="first-paragraph">I earned my bachelor's degree in journalism at Université du Québec à Montréal (UQAM).</p>
    <img src="university.jpg" alt="UQAM campus with Montreal’s downtown skyline in the background."/>
    <p class="red-text">The picture above comes from Wikimedia. You can find it <a href="https://commons.wikimedia.org/wiki/File:UQAM-Judith-Jasmin.jpg">here</a> along with its license.</p>
    <p class="red-text">Montreal is a wonderful city. You should visit it!</p>
</body>
</html>

Une capture d'écran montrant un fichier CSS lié avec un fichier HTML.

Comme vous pouvez le voir, les styles sont toujours appliqués. Notez que vous pouvez lier plusieurs fichiers .css si nécessaire.

Utiliser un modèle .css

Vous pouvez également utiliser des fichiers CSS disponibles publiquement sur Internet. C’est particulièrement utile lorsque vous souhaitez utiliser des modèles CSS en code ouvert.

Un que je trouve particulièrement bien fait est Simple.css. Il s’occupe de styliser chaque élément de votre page.

Pour l’utiliser, il suffit de le lier dans votre fichier HTML. Lorsque vous ouvrirez votre fichier dans un navigateur web, le fichier CSS sera récupéré et appliqué.

Ci-dessous, j’ai également supprimé les attributs id et class pour simplifier les choses.

index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>My Alma Mater</title>
    <link rel="stylesheet" href="https://cdn.simplecss.org/simple.min.css">
</head>
<body>
    <h1>My Alma Mater: UQAM</h1>
    <p>I earned my bachelor's degree in journalism at Université du Québec à Montréal (UQAM).</p>
    <img src="university.jpg" alt="UQAM campus with Montreal’s downtown skyline in the background."/>
    <p>The picture above comes from Wikimedia. You can find it <a href="https://commons.wikimedia.org/wiki/File:UQAM-Judith-Jasmin.jpg">here</a> along with its license.</p>
    <p>Montreal is a wonderful city. You should visit it!</p>
</body>
</html>

Une capture d’écran montrant un fichier CSS lié à un fichier HTML.

💡

Dans le code ci-dessus, simple.min.css est une version minimisée du fichier CSS. Si vous l’ouvrez, vous verrez du code CSS très difficile à lire. Il a été optimisé pour être aussi petit que possible. Comparée au CSS original, plus facile à lire pour les humains, la version minimisée est environ 30 % plus légère. Elle se charge plus rapidement et offre une meilleure expérience à l’utilisateur. Elle utilise aussi moins de bande passante serveur, ce qui peut réduire les coûts pour les grands projets avec beaucoup de trafic.

Conclusion

Il y a encore beaucoup à apprendre sur le CSS et ses 200+ propriétés, qui, combinées, permettent de créer des visuels impressionnants et même des animations.

Cependant, cette leçon n’était qu’une introduction. Avec ces bases, vous pourrez explorer davantage par vous-même, et nous continuerons à utiliser le CSS dans les prochaines leçons et projets.

Maintenant que nous savons structurer une page web avec HTML et la styliser avec CSS, il est temps d’apprendre à ajouter de l’interactivité ! 🥳