📐 CSS Grid Cheatsheet¶
Le CSS Grid permet de créer des mises en page en deux dimensions (lignes et colonnes).
C’est une méthode puissante pour organiser et positionner les éléments d’une page.
🔹 Créer un Grid¶
Sur le bloc parent, activer l'affichage en grid.
.container {
display: grid; /* active grid */
}
🔹 Définir colonnes et lignes¶
Il existe 2 méthodes pour créer les lignes et les colonnes de la grille :
- grid-template : créer un modèle avec nombre de colonnes et de lignes avec des tailles associées
- grid-areas: créer une maquette avec des noms de zones
*️⃣ Méthode 1 : modèle grid-template¶
Le code suivant crée une grille de 3 colonnes par 2 lignes.
.container {
display: grid;
grid-template-columns: 1fr 2fr 3fr; /* 3 colonnes de largeur en fraction d'espace*/
grid-template-rows: 6rem auto; /* 2 lignes dont la hauteur de la première est de 6rem et la deuxième dépend du contenu*/
}
Positionner les items¶
Chaque élément enfant peut être placé avec les propriétés suivantes :
#item1 {
grid-column: 1 / span 3; /* démarre à la colonne 1 et s'étend sur 3 colonnes */
grid-row: 1 / span 2; /* démarre à la ligne 1 et s'étend sur 2 lignes */
}
#item2 {
grid-column: 2 / 4; /* débute à la colonne 2 et s'arrête avant la 4 */
grid-row: 2 / 3; /* débute à la ligne 2 et s'arrête avant la 3 */
}
#item3 {
grid-column-start: 1; /*débute à la colonne 1*/
grid-column-end: 3; /*arrête avant la colonne 3*/
grid-row-start: 1; /*débute à la ligne 1*/
grid-row-end: 3; /*arrête avant la ligne 3*/
}
*️⃣ Méthode 2 : zones grid-areas¶
Définir un "nom" pour chaque zone de la grille :
.container {
grid-template-areas:
"tete tete"
"sidebar corps"
"pied pied";
}
Positionner les items¶
Positionner les enfants avec leur nom de zone respective :
header { grid-area: tete; }
.sidebar { grid-area: sidebar; }
main { grid-area: corps; }
footer { grid-area: pied; }
*️⃣ Mélange des deux¶
On peut mélanger les deux méthodes pour établir des zones, avec des tailles définies.
<div class="container">
<header>Header</header>
<div class="sidebar">Barre gauche</div>
<main>Contenu</main>
<footer>Footer</footer>
</div>
.container {
display: grid;
grid-template-columns: 1fr 4fr; /*2 colonnes dont la deuxième est 4 fois large comme la première*/
grid-template-rows: 10rem auto 10rem; /*3 lignes dont la deuxième s'ajuste au contenu*/
grid-template-areas: /*4 zones dans la grille : 1re ligne-> une zone, 2e ligne-> 2 zones, 3e ligne -> 1 zone*/
"tete tete"
"sidebar corps"
"pied pied";
gap: 1rem;
}
header { grid-area: tete; }
.sidebar { grid-area: sidebar; }
main { grid-area: corps; }
footer { grid-area: pied; }
🔹 Espacement (gaps)¶
Pour créer des espaces (marges entre les colonnes et les lignes)
.container {
gap: 1.5rem; /* espace entre lignes et colonnes */
column-gap: 0.75rem; /* espace entre les colonnes */
row-gap: 1rem; /* espace entre les lignes */
gap: 0; /*retirer les espaces*/
}
🔹 Alignement dans la grille¶
.container {
justify-items: center; /* horizontal: start | end | center | stretch */
align-items: center; /* vertical: start | end | center | stretch */
}
#item1{
justify-self: stretch; /* horizontal: start | end | center | stretch */
align-self: stretch; /* vertical: start | end | center | stretch */
}
🚀 Résumé¶
display: grid;
grid-template-columns
/grid-template-rows
pour définir des taille des colonnes et de lignesgrid-column
/grid-row
pour positionner un enfantgrid-template-areas
pour organiser les zones avec des nomsgap
pour les espacesjustify-items
,align-items
pour aligner tous les enfants dans leur cellulejustify-self
,align-self
pour aligner un enfant dans sa cellule