Séance 4 : Introduction CSS, sélecteurs et Box Model
🎯 Objectifs de la séance
À la fin de cette séance, vous serez capable de :
- Intégrer du CSS dans une page HTML
- Utiliser les sélecteurs CSS de base et avancés
- Comprendre et maîtriser le Box Model CSS
- Appliquer des styles de texte, couleurs et espacements
- Comprendre la spécificité et la cascade CSS
📚 Partie théorique
4.1 Qu'est-ce que le CSS ?
CSS (Cascading Style Sheets) = Feuilles de style en cascade
Le CSS permet de séparer le contenu (HTML) de la présentation (design).
✅ Séparation claire
✅ Facile à maintenir
✅ Style réutilisable
4.2 Les 3 façons d'intégrer du CSS
1. CSS inline (dans la balise)
❌ À éviter : mélange HTML et CSS, difficile à maintenir
2. CSS interne (dans <head>)
✅ Utile pour des styles spécifiques à une page
⚠️ Pas réutilisable entre pages
3. CSS externe (fichier séparé) ⭐ RECOMMANDÉ
✅ Séparation totale
✅ Réutilisable sur toutes les pages
✅ Mise en cache par le navigateur
4.3 Syntaxe CSS
Exemple concret :
- Sélecteur : élément HTML ciblé (
h1) - Propriété : aspect à modifier (
color,font-size) - Valeur : style appliqué (
#2c3e50,32px) ;sépare les déclarations{}délimite le bloc de styles
Commentaires CSS
4.4 Sélecteurs de base
Sélecteur d'élément
Cible tous les éléments d'un type.
Sélecteur de classe (.)
Cible les éléments avec une classe spécifique.
<p class="important">Texte important</p>
<p>Texte normal</p>
<div class="important">Div important</div>
✅ Réutilisable sur plusieurs éléments
✅ Peut être utilisé sur différents types d'éléments
Sélecteur d'ID (#)
Cible un élément avec un ID spécifique (unique).
⚠️ Un ID doit être unique dans la page
⚠️ Préférez les classes (plus flexible)
Sélecteur universel (*)
Cible tous les éléments.
4.5 Sélecteurs combinés
Sélecteur descendant (espace)
Cible les éléments descendants (enfants, petits-enfants...).
<div class="container">
<p>Ce paragraphe sera stylé</p>
<section>
<p>Celui-ci aussi</p>
</section>
</div>
Sélecteur d'enfant direct (>)
Cible uniquement les enfants directs.
<div class="container">
<p>Stylé (enfant direct)</p>
<section>
<p>Non stylé (petit-enfant)</p>
</section>
</div>
4.6 Pseudo-classes
Ciblent des états ou positions spécifiques.
/* Au survol */
a:hover {
color: red;
}
/* Au focus */
input:focus {
border-color: blue;
}
/* Premier/dernier enfant */
li:first-child { font-weight: bold; }
li:last-child { border-bottom: none; }
/* Lignes alternées */
tr:nth-child(odd) { background-color: #f0f0f0; }
tr:nth-child(even) { background-color: white; }
4.7 Propriétés de texte et de couleur
Couleurs
/* Différentes syntaxes */
color: red; /* Nom */
background-color: red;
color: #ff0000; /* Hexadécimal */
color: rgb(255, 0, 0); /* RGB */
color: rgba(255, 0, 0, 0.5); /* RGBA avec transparence */
Police de caractères
p {
/* Famille de police */
font-family: Arial, Helvetica, sans-serif;
/* Taille */
font-size: 16px;
/* ou en em, rem, %, vw... */
/* Graisse */
font-weight: bold; /* ou 400, 700... */
/* Style */
font-style: italic;
/* Alignement */
text-align: center; /* left, right, justify */
/* Décoration */
text-decoration: underline; /* none, line-through */
/* Transformation */
text-transform: uppercase; /* lowercase, capitalize */
/* Hauteur de ligne */
line-height: 1.5;
/* Espacement des lettres */
letter-spacing: 2px;
}
4.8 Le Box Model (Modèle de boîte)
⭐ Concept fondamental du CSS : Chaque élément HTML est une boîte rectangulaire composée de 4 zones.
Schéma du Box Model
┌─────────────────────────────────┐
│ MARGIN (marge) │ ← Espace extérieur transparent
│ ┌───────────────────────────┐ │
│ │ BORDER (bordure) │ │ ← Contour visible
│ │ ┌─────────────────────┐ │ │
│ │ │ PADDING (rembour.) │ │ │ ← Espace intérieur
│ │ │ ┌───────────────┐ │ │ │
│ │ │ │ CONTENT │ │ │ │ ← Contenu (texte, images)
│ │ │ │ (contenu) │ │ │ │
│ │ │ └───────────────┘ │ │ │
│ │ └─────────────────────┘ │ │
│ └───────────────────────────┘ │
└─────────────────────────────────┘
Propriétés du Box Model
.box {
/* Contenu */
width: 300px;
height: 200px;
/* Padding (espace intérieur) */
padding: 20px; /* Tous les côtés */
padding: 20px 10px; /* Vertical | Horizontal */
padding: 10px 20px 30px; /* Haut | H&D | Bas */
padding: 10px 20px 30px 40px; /* Haut Droite Bas Gauche */
/* Border (bordure) */
border: 2px solid black;
border-radius: 10px; /* Coins arrondis */
/* Margin (espace extérieur) */
margin: 20px;
margin: 0 auto; /* Centrer horizontalement */
}
Box-sizing
Par défaut (box-sizing: content-box) :
/* PAR DÉFAUT - À ÉVITER */
.box {
width: 300px;
padding: 20px;
border: 5px solid black;
}
/* Largeur réelle = 300 + 40 + 10 = 350px */
/* RECOMMANDÉ - box-sizing: border-box */
* {
box-sizing: border-box;
}
.box {
width: 300px;
padding: 20px;
border: 5px solid black;
}
/* Largeur réelle = 300px (padding et border inclus) */
⭐ Bonne pratique : Toujours utiliser box-sizing: border-box globalement !
4.9 Display et positionnement de base
/* Display */
display: block; /* Prend toute la largeur */
display: inline; /* Sur la même ligne */
display: inline-block; /* Hybride */
display: none; /* Caché */
/* Centrer un bloc */
.container {
max-width: 800px;
margin: 0 auto; /* Centré horizontalement */
}
4.10 Spécificité et cascade
Quand plusieurs règles s'appliquent au même élément, laquelle gagne ?
Ordre de priorité (du plus fort au plus faible)
!important(à éviter)- Style inline (
style="") - ID (
#id) - Classe, attribut, pseudo-classe (
.class,[attr],:hover) - Élément (
h1,p)
Calcul de la spécificité
Exemples :
p { } /* (0,0,0,1) */
.classe { } /* (0,0,1,0) */
#id { } /* (0,1,0,0) */
p.classe { } /* (0,0,1,1) */
div p.classe { } /* (0,0,1,2) */
#id .classe p { } /* (0,1,1,1) */
La cascade
Si la spécificité est égale, c'est la dernière règle qui l'emporte.
💻 Partie pratique
Exercice 5 : Styliser un article de blog
📝 À retenir de cette séance
✅ Le CSS sépare le contenu (HTML) de la présentation (design)
✅ Préférer le CSS externe pour la maintenabilité
✅ Les sélecteurs permettent de cibler précisément les éléments
✅ Le Box Model : content → padding → border → margin
✅ Toujours utiliser box-sizing: border-box pour faciliter les calculs
✅ La spécificité détermine quelle règle s'applique en cas de conflit
✅ Les pseudo-classes (:hover, :focus) ajoutent de l'interactivité
✅ Utiliser des classes plutôt que des IDs pour le style
✅ Organiser le CSS avec des commentaires et des sections
✅ max-width + margin: 0 auto permet de centrer et limiter la largeur
📚 Pour aller plus loin
Documentation
- MDN - CSS
- CSS Reference - Guide visuel
Outils
- CSS Validator - Validation CSS
Jeu
- CSS Diner - Jeu des selecteurs CSS