Nous utilisons les cookies afin de fournir les services et fonctionnalités proposés sur notre site et afin d’améliorer l’expérience de nos utilisateurs. Pour plus d'informations nous vous invitons à consulter notre Politiques sur les cookies ainsi que notre Politique de confidentialité.

Maîtriser l'alignement parfait avec CSS Subgrid

Avez-vous déjà lutté pour aligner des boutons ou des prix en bas de plusieurs vignettes de tarifs ? Traditionnellement, nous utilisions des min-height arbitraires ou du Flexbox complexe. En 2024/2025, la solution est arrivée : le CSS Subgrid.

1. Le Concept : Qu'est-ce que le Subgrid ?

Par défaut, une grille CSS ne concerne que les enfants directs. Le Subgrid permet à un élément enfant d'adopter la grille de son parent comme la sienne. Cela signifie que les colonnes et les lignes du parent deviennent accessibles à l'enfant, garantissant un alignement millimétré sur l'ensemble de votre mise en page.

2. La structure HTML

Pour notre exemple de cartes de tarifs, nous avons besoin d'une structure simple où chaque carte contient les mêmes sections (Titre, Liste, Prix).

<div class="pricing-wrapper">
  <article class="card">
    <h3>Plan Standard</h3>
    <ul>
      <li>Fonctionnalité A</li>
      <li>Fonctionnalité B</li>
    </ul>
    <div class="price">19€/mois</div>
  </article>
  </div>

3. Le code CSS (La solution moderne)

Le secret réside dans deux étapes : définir les lignes sur le parent, puis demander à l'enfant de s'y calquer.

.pricing-wrapper {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-template-rows: auto 1fr auto; 
  gap: 20px;
}

.card {
  display: grid;
  grid-template-rows: subgrid;
  grid-row: span 3;
  border: 1px solid #ddd;
  padding: 20px;
  transition: transform 0.3s ease;
}

.card:hover {
  transform: translateY(-8px);
  box-shadow: 0 10px 20px rgba(0,0,0,0.1);
}

4. Pourquoi c'est une révolution ?

  • Alignement dynamique : Si la liste de la carte n°2 s'allonge, la ligne de la grille s'agrandit pour toutes les cartes. Les prix restent donc toujours alignés horizontalement.

  • Maintenance : Plus besoin de calculer des hauteurs en pixels.

  • Performance : C'est du CSS natif, interprété ultra-rapidement par le navigateur.

Bonus : Optimiser avec LESS

Pour ceux qui utilisent un préprocesseur, nous pouvons automatiser cette logique avec un Mixin. Cela permet de réutiliser la logique de subgrid sur n'importe quel composant en une seule ligne.

.apply-subgrid(@count) {
  display: grid;
  grid-template-rows: subgrid;
  grid-row: span @count;
}

.card {
  .apply-subgrid(3);
  
  &:hover {
    transform: translateY(-8px);
  }
}

Le CSS Subgrid est l'outil ultime pour les interfaces en grille complexes. Il réconcilie le design rigoureux et le contenu dynamique.

Testez-le sur vos prochains projets de listes ou de tableaux de bord !

Voir un exemple sur codepen : Vignettes avec prix

Note : Avant de plonger dans les subtilités du Subgrid, il est indispensable d'avoir une bonne compréhension du module CSS Grid Layout standard. Le Subgrid repose entièrement sur les concepts de conteneur parent (display: grid), de définition de colonnes (grid-template-columns) et de placement d'éléments (grid-row). Si vous n'êtes pas encore à l'aise avec la création d'une grille classique, je vous recommande de vous familiariser avec ces bases, car le Subgrid n'est rien d'autre que l'art de faire hériter cette structure à vos éléments enfants.

Vous désirez un site internet pour vous ou votre entreprise ? contactez-nous !
Haut de la page