Comprendre l'histoire, le rôle et l'importance de CSS dans le web moderne.
Imaginez HTML comme l'squelette d'une maison (murs, portes, fenêtres) et CSS comme la décoration intérieure (couleurs, mobilier, disposition). Sans CSS, une page web est juste du texte brut gris sur blanc.
CSS ne concerne pas le contenu mais l'apparence. Il répond à la question : « Comment est-ce que ça ressemble ? »
À l'origine, les propriétés visuelles étaient directement dans le HTML
avec des balises comme <font>,
<center>, <b>. C'était un
mélange inextricableable de contenu et de présentation.
<!-- Méthode ancienne (à ne plus jamais faire) -->
<font color="red" size="3">Titre important</font>
<center>Texte centré</center>
<b>Texte gras</b>
La première recommandation CSS. Elle introduit les concepts fondamentaux :
h1, p, a)
color, font,
margin, padding, text-align
Ajouts majeurs :
position (relative, absolute, fixed)z-indexCSS3 a été découpé en modules indépendants, ce qui permet une évolution plus rapide. C'est la version que nous utilisons aujourd'hui :
calc(), clamp(),
min(), max()
@layer (Cascade Layers)| Version | Année | Innovation clé |
|---|---|---|
| CSS1 | 1996 | Séparation contenu/présentation |
| CSS2 | 1998 | Positionnement, z-index, médias |
| CSS3 | 2011+ | Modules, Flexbox, Grid, variables |
C'est la question la plus importante de ce chapitre. La séparation n'est pas une convention arbitraire — c'est une architecture logicielle.
<h1 style="color: blue; font-size: 24px; margin-bottom: 10px;">Titre</h1>
<p style="color: gray; line-height: 1.6; font-family: Arial;">Paragraphe</p>
<h1 style="color: blue; font-size: 24px; margin-bottom: 10px;">Autre titre</h1>
<p style="color: gray; line-height: 1.6; font-family: Arial;">Autre paragraphe</p>
<!-- HTML : structure -->
<h1 class="titre">Titre</h1>
<p class="texte">Paragraphe</p>
/* CSS : présentation */
.titre {
color: blue;
font-size: 24px;
margin-bottom: 10px;
}
.texte {
color: gray;
line-height: 1.6;
font-family: Arial;
}
Lorsque tu charges une page web, voici ce qui se passe réellement :
HTML ──→ DOM Tree
│
CSS ──→ CSSOM
│
▼
Render Tree
│
▼
┌────┴────┐
│ Layout │ (calcul des positions et tailles)
└────┬────┘
│
▼
┌────┴────┐
│ Paint │ (dessin des pixels)
└────┬────┘
│
▼
┌────┴────┐
│Composite │ (assemblage des couches)
└─────────┘
Le pipeline de rendu simplifié d'un navigateur web
Le navigateur lit le fichier HTML et construit le DOM (Document Object Model), un arbre d'objets représentant chaque élément.
En parallèle, il lit toutes les feuilles de styles (externes, internes, inline) et construit le CSSOM (CSS Object Model), un arbre de styles calculés.
Les deux arbres fusionnent pour former le Render Tree. Cet arbre contient uniquement les éléments visibles avec leurs styles calculés.
display: none n'apparaissent PAS dans le Render Tree.
Le navigateur calcule la position exacte et la taille de chaque élément. Si tu modifies une propriété qui affecte la mise en page (margin, width, position...), cela déclenche un reflow (recalcul complet).
Le navigateur dessine les pixels : couleurs,
bordures, ombres, texte. Si tu modifies color ou
background, cela déclenche un
repaint (redessin局部).
Les différentes couches sont assemblées pour former l'image finale visible à l'écran.
transform ou
opacity ne déclenche PAS de reflow — c'est pourquoi les
animations sur ces propriétés sont plus fluides.
Un bloc CSS suit toujours la même structure :
sélecteur {
propriété: valeur;
propriété: valeur;
}
Exemple concret :
h1 {
color: blue;
font-size: 24px;
text-align: center;
}
h1)
color)
blue)
color: blue;)
{ et }
/* FAUX */
h1 {
color: blue /* Le navigateur peut planter */
font-size: 24px
}
/* CORRECT */
h1 {
color: blue;
font-size: 24px;
}
- et _
/* FAUX — CSS n'accepte pas le underscore */
.text_bg { background: red; }
/* CORRECT */
.text-bg { background: red; }
/* FAUX */
div { text-color: red; }
/* CORRECT */
div { color: red; }
font-size et
text-size
/* FAUX — text-size n'existe pas */
p { text-size: 16px; }
/* CORRECT */
p { font-size: 16px; }
.rouge, mais .texte-erreur).
h1 { (convention).
/* ✅ Bonne pratique */
.titre {
color: #1e293b;
font-size: 2rem;
font-weight: 700;
line-height: 1.2;
}
.sous-titre {
color: #64748b;
font-size: 1.1rem;
margin-top: 0.5rem;
}
Exercice : Explorer le DOM
Objectif : te familiariser avec les DevTools, qui seront tes meilleurs amis tout au long de cette formation.
Projet : Première page stylisée
Crée un fichier index.html et un fichier
style.css séparé.
Le HTML doit contenir :
<h1><h2><p><a>Le CSS doit :
Cet exercice semble simple, mais il te force à comprendre la séparation HTML/CSS et la link entre les fichiers.
Quiz rapide
.mon_element ou
.mon-element ?