ITSkillsCenter
Développement Web

Guide : CSS Grid Layout pour des mises en page modernes

4 min de lecture

CSS Grid : le système de mise en page le plus puissant

CSS Grid permet de créer des mises en page en 2 dimensions (lignes ET colonnes) de manière simple et intuitive. C’est l’outil idéal pour les layouts complexes que Flexbox ne gère pas facilement.

Grille basique

<div class="grille">
    <div class="item">1</div>
    <div class="item">2</div>
    <div class="item">3</div>
    <div class="item">4</div>
    <div class="item">5</div>
    <div class="item">6</div>
</div>

<style>
.grille {
    display: grid;
    grid-template-columns: repeat(3, 1fr);  /* 3 colonnes égales */
    gap: 20px;                               /* Espace entre les cellules */
    padding: 20px;
}

.item {
    background: #667eea;
    color: white;
    padding: 30px;
    text-align: center;
    border-radius: 8px;
    font-size: 24px;
}
</style>

Définir les colonnes et lignes

/* Colonnes de tailles différentes */
.grille {
    display: grid;
    grid-template-columns: 250px 1fr 1fr;  /* Sidebar fixe + 2 colonnes flexibles */
}

/* Unité fr = fraction de l'espace disponible */
grid-template-columns: 1fr 2fr 1fr;  /* 25% - 50% - 25% */

/* Répéter un pattern */
grid-template-columns: repeat(4, 1fr);     /* 4 colonnes égales */
grid-template-columns: repeat(3, 1fr 2fr); /* Alternance petite/grande */

/* Colonnes automatiques (responsive sans media queries !) */
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
/* Crée autant de colonnes que possible, minimum 280px chacune */

/* Lignes */
grid-template-rows: 80px 1fr 60px;  /* Header - Contenu - Footer */

Layout de page complète avec grid-template-areas

.page {
    display: grid;
    grid-template-columns: 250px 1fr;
    grid-template-rows: 70px 1fr 50px;
    grid-template-areas:
        "header  header"
        "sidebar contenu"
        "footer  footer";
    min-height: 100vh;
    gap: 0;
}

.header  { grid-area: header;  background: #1a1a2e; color: white; }
.sidebar { grid-area: sidebar; background: #f5f5f5; padding: 20px; }
.contenu { grid-area: contenu; padding: 30px; }
.footer  { grid-area: footer;  background: #333; color: white; }

/* Responsive : empiler sur mobile */
@media (max-width: 768px) {
    .page {
        grid-template-columns: 1fr;
        grid-template-areas:
            "header"
            "contenu"
            "sidebar"
            "footer";
    }
}

💡 grid-template-areas en mots simples

C’est comme dessiner votre page sur du papier quadrillé. Chaque mot représente une zone. Les zones identiques qui se suivent forment un bloc. C’est la méthode la plus visuelle et lisible pour créer des layouts.

Positionner les éléments sur la grille

/* Un élément qui prend 2 colonnes */
.item-large {
    grid-column: span 2;
}

/* Un élément qui prend 2 lignes */
.item-tall {
    grid-row: span 2;
}

/* Position précise : de la ligne 1 à 3 */
.item-hero {
    grid-column: 1 / 3;  /* Colonnes 1 et 2 */
    grid-row: 1 / 2;     /* Ligne 1 */
}

/* Raccourci : grid-column: début / fin */
.sidebar { grid-column: 1 / 2; grid-row: 1 / 4; }

Alignement dans la grille

.grille {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    
    /* Aligner les éléments horizontalement */
    justify-items: center;  /* start | center | end | stretch */
    
    /* Aligner les éléments verticalement */
    align-items: center;    /* start | center | end | stretch */
    
    /* Centrer la grille elle-même */
    justify-content: center;
    align-content: center;
}

/* Aligner un seul élément */
.item-special {
    justify-self: end;
    align-self: start;
}

/* Centrer parfaitement un élément */
.grille-centree {
    display: grid;
    place-items: center;  /* Raccourci pour align-items + justify-items */
    min-height: 100vh;
}

Grid vs Flexbox : quand utiliser quoi ?

CSS Grid Flexbox
Layout 2D (lignes + colonnes) Layout 1D (ligne OU colonne)
Mise en page globale Composants (navbar, cards, buttons)
Grilles complexes, dashboards Alignement, distribution d’espace
Le layout est défini par le parent Le layout dépend du contenu

En pratique : utilisez Grid pour la structure de la page et Flexbox pour les composants à l’intérieur.

Dashboard responsive avec Grid

.dashboard {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    grid-auto-rows: minmax(150px, auto);
    gap: 20px;
    padding: 20px;
}

.widget-large { grid-column: span 2; grid-row: span 2; }
.widget-wide  { grid-column: span 2; }
.widget-tall  { grid-row: span 2; }

@media (max-width: 768px) {
    .dashboard { grid-template-columns: repeat(2, 1fr); }
    .widget-large { grid-column: span 2; grid-row: span 1; }
}

@media (max-width: 480px) {
    .dashboard { grid-template-columns: 1fr; }
    .widget-large, .widget-wide { grid-column: span 1; }
}

Exercice pratique

🎯 Défi : Layout complet avec CSS Grid

  1. Créez un layout de page avec grid-template-areas : header, sidebar, contenu, footer
  2. Le contenu contient une grille de 6 cartes avec auto-fill et minmax
  3. Une carte « featured » prend 2 colonnes
  4. Sur mobile : tout en 1 colonne, sidebar après le contenu
  5. Bonus : créez un dashboard avec des widgets de tailles variées
#css #grid #responsive
Besoin d'un site web ?

Confiez-nous la Création de Votre Site Web

Site vitrine, e-commerce ou application web — nous transformons votre vision en réalité digitale. Accompagnement personnalisé de A à Z.

À partir de 350.000 FCFA
Parlons de Votre Projet
Publicité

Articles Similaires