📦 Semaine 2 - Jour 1 : Le Box Model CSS

📚 Qu'est-ce que le Box Model ?

Le Box Model (modèle de boîte) est un concept fondamental en CSS. Chaque élément HTML est considéré comme une boîte rectangulaire composée de 4 zones : le contenu, le padding (remplissage intérieur), la bordure et la marge.

Comprendre le Box Model est essentiel pour maîtriser la mise en page et l'espacement des éléments.

🎯 Anatomie du Box Model

MARGIN (Marge externe)
BORDER (Bordure)
PADDING (Remplissage interne)
CONTENT (Contenu)

1. Content (Contenu)

La zone où le contenu réel est affiché (texte, images, etc.).

.box {
  width: 200px;
  height: 100px;
}

📐 Propriétés :
width : largeur
height : hauteur
min-width / max-width
min-height / max-height

2. Padding (Remplissage)

Espace entre le contenu et la bordure (transparent).

.box {
  padding: 20px;
}

/* Ou individuellement */
padding-top: 10px;
padding-right: 15px;
padding-bottom: 10px;
padding-left: 15px;
Ce contenu a 20px de padding de tous les côtés

💡 Astuce : Le padding hérite de la couleur de fond de l'élément

3. Border (Bordure)

Contour visible autour du padding et du contenu.

.box {
  border: 2px solid blue;
}

/* Ou séparément */
border-width: 2px;
border-style: solid;
border-color: blue;
Ce contenu a une bordure de 5px solid

4. Margin (Marge)

Espace extérieur, entre l'élément et les autres éléments (transparent).

.box {
  margin: 30px;
}

/* Ou individuellement */
margin-top: 20px;
margin-right: 15px;
margin-bottom: 20px;
margin-left: 15px;
Ce contenu a 30px de marge de tous les côtés

⚠️ Note : Les marges peuvent "fusionner" (margin collapse)

⚡ Syntaxes raccourcies

Padding & Margin - 4 valeurs

/* Top Right Bottom Left (sens horaire) */
padding: 10px 20px 10px 20px;

/* Top/Bottom Left/Right */
padding: 10px 20px;

/* Toutes les côtés */
padding: 20px;

/* Top, Left/Right, Bottom */
padding: 10px 20px 15px;

Border - Styles disponibles

solid
dashed
dotted
double
border: 2px solid #3498db;
border: 4px dashed #e74c3c;
border: 4px dotted #1abc9c;
border: 6px double #9b59b6;

🎛️ box-sizing: border-box

Le problème du calcul de taille

Par défaut, width et height ne s'appliquent qu'au contenu. Le padding et la bordure s'ajoutent à cette taille.

❌ Sans box-sizing (défaut)

width: 200px
+ padding: 20px × 2
+ border: 5px × 2
= 250px au total

✅ Avec box-sizing: border-box

width: 200px
(padding et border inclus)
= 200px au total
/* Recommandation : appliquer à tous les éléments */
* {
  box-sizing: border-box;
}

✅ Avantage : Calculs plus prévisibles, mise en page plus simple
🌟 Recommandation : Toujours utiliser box-sizing: border-box dans vos projets !

📺 La propriété display

display: block

Prend toute la largeur disponible, commence sur une nouvelle ligne.

.element {
  display: block;
}
Block 1
Block 2
Block 3

📋 Éléments block par défaut :
div, p, h1-h6, section, article, header, footer, ul, li

display: inline

Prend uniquement la largeur nécessaire, reste sur la même ligne.

.element {
  display: inline;
}
Inline 1 Inline 2 Inline 3

📋 Éléments inline par défaut :
span, a, strong, em, img

⚠️ Limitation : width et height n'ont pas d'effet

display: inline-block

Comme inline, mais accepte width, height, padding et margin.

.element {
  display: inline-block;
  width: 150px;
}
Box 1
Box 2
Box 3

✅ Usage : Boutons, cartes côte à côte, menus horizontaux

display: none

Cache complètement l'élément (n'occupe pas d'espace).

.element {
  display: none;
}

💡 Alternative :
visibility: hidden; cache l'élément mais garde l'espace

📊 Comparaison display

Propriété Nouvelle ligne Width/Height Padding/Margin Usage
block Oui ✅ Oui ✅ Tous Sections, conteneurs
inline Non ❌ Non ⚠️ Horizontal seul Texte, liens
inline-block Non ✅ Oui ✅ Tous Boutons, cartes
none - - - Masquer complètement
Froggiesplaining :


🎯 Objectifs de ce cours :
✅ Comprendre les 4 composantes du Box Model (content, padding, border, margin)
✅ Maîtriser les syntaxes raccourcies pour padding et margin
✅ Utiliser box-sizing: border-box pour des calculs prévisibles
✅ Connaître les différences entre block, inline et inline-block

📖 Points clés à retenir :
• Le Box Model détermine la taille et l'espacement des éléments
Padding = espace intérieur, Margin = espace extérieur
• Toujours utiliser box-sizing: border-box pour faciliter les calculs
display: block = nouvelle ligne, prend toute la largeur
display: inline = même ligne, ne respecte pas width/height
display: inline-block = même ligne + width/height

🏋️ Exercice pratique :
Créez 3 cartes (cards) côte à côte avec :
• Une bordure colorée différente pour chaque carte
• Du padding pour espacer le contenu
• Des marges pour séparer les cartes
• Une largeur fixe avec box-sizing: border-box

Froggie explain

GitHub - eCrea