Grid / Bento
Système de grille flexible et layouts bento via classes CSS et attributs data-*. Responsive par défaut, zéro dépendance.
Grille simple
Ajoutez la classe grid et définissez le nombre de colonnes avec data-cols :
<div class="grid" data-cols="3" data-gap="md">
<div>Colonne 1</div>
<div>Colonne 2</div>
<div>Colonne 3</div>
</div>
Colonnes
| Attribut / Classe | Colonnes |
|---|---|
data-cols="1" ou grid--1 | 1 colonne |
data-cols="2" ou grid--2 | 2 colonnes |
data-cols="3" ou grid--3 | 3 colonnes |
data-cols="4" ou grid--4 | 4 colonnes |
data-cols="5" ou grid--5 | 5 colonnes |
data-cols="6" ou grid--6 | 6 colonnes |
Gap (espacement)
| Attribut / Classe | Espacement |
|---|---|
data-gap="none" ou grid--gap-none | 0 |
data-gap="xs" ou grid--gap-xs | var(--space-2) |
data-gap="sm" ou grid--gap-sm | var(--space-4) |
data-gap="md" ou grid--gap-md | var(--space-6) — défaut |
data-gap="lg" ou grid--gap-lg | var(--space-8) |
data-gap="xl" ou grid--gap-xl | var(--space-12) grille / var(--space-10) bento |
Alignement vertical
| Attribut | Effet |
|---|---|
data-align="start" | Aligné en haut |
data-align="center" | Centré verticalement |
data-align="end" | Aligné en bas |
data-align="stretch" | Étiré (défaut) |
Span (items)
Un élément enfant peut occuper plusieurs colonnes ou lignes :
<div class="grid" data-cols="3">
<div data-col-span="2">Je prends 2 colonnes</div>
<div>1 colonne</div>
<div data-col-span="full">Toute la largeur</div>
</div>
| Attribut | Effet |
|---|---|
data-col-span="2" à "6" | Occupe N colonnes |
data-col-span="full" | Toute la largeur |
data-row-span="2" à "4" | Occupe N lignes |
Bento
Le système bento est une grille 4 colonnes avec des tailles prédéfinies pour créer des layouts asymétriques rapidement :
<div class="bento" data-gap="md">
<div class="bento__item" data-size="large">Grande carte</div>
<div class="bento__item">Normal</div>
<div class="bento__item">Normal</div>
<div class="bento__item" data-size="wide">Large</div>
<div class="bento__item" data-size="tall">Haute</div>
<div class="bento__item">Normal</div>
</div>
Tailles prédéfinies
| Attribut | Effet |
|---|---|
| (aucun) | 1 colonne, 1 ligne |
data-size="wide" | 2 colonnes, 1 ligne |
data-size="tall" | 1 colonne, 2 lignes |
data-size="large" | 2 colonnes, 2 lignes |
data-size="full" | Toute la largeur |
Pour un contrôle plus fin, utilisez data-col-span et data-row-span directement sur les .bento__item.
Hauteur des lignes
| Attribut | Hauteur minimum |
|---|---|
data-row-height="sm" | 120px |
data-row-height="md" | 180px (défaut) |
data-row-height="lg" | 240px |
data-row-height="xl" | 320px |
Layouts prédéfinis
Des layouts courants sont disponibles via data-layout :
| Layout | Description |
|---|---|
data-layout="sidebar" | 2/3 + 1/3 (contenu + sidebar droite) |
data-layout="sidebar-left" | 1/3 + 2/3 (sidebar gauche + contenu) |
data-layout="feature" | 1 grande carte à gauche + 2 petites empilées à droite |
<!-- Layout feature : 1 grande + 2 petites -->
<div class="bento" data-layout="feature" data-gap="md">
<div class="bento__item">Mise en avant</div>
<div class="bento__item">Détail 1</div>
<div class="bento__item">Détail 2</div>
</div>
Responsive
Toutes les grilles s'adaptent automatiquement selon 4 breakpoints :
| Breakpoint | Range | Grille |
|---|---|---|
| Desktop | ≥ 992px | Toutes les colonnes |
| Tablette | ≤ 991px | 5-6 cols → 3, bento → 3 colonnes |
| Mobile landscape | ≤ 767px | 3-6 cols → 2, bento → 2 cols, layouts → 1 col |
| Mobile | ≤ 478px | Tout passe en 1 colonne |
Les spans trop larges pour l'écran sont automatiquement réduits.
Responsive personnalisé
Pour un contrôle fin du nombre de colonnes par breakpoint, nommez votre grille avec une classe CSS et ajoutez des media queries dans votre feuille de style :
<!-- HTML -->
<div class="grid grid-services" data-cols="4" data-gap="md">
<div>Service 1</div>
<div>Service 2</div>
<div>Service 3</div>
<div>Service 4</div>
</div>
<!-- CSS responsive -->
<style>
@media (max-width: 991px) {
.grid-services { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 767px) {
.grid-services { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 478px) {
.grid-services { grid-template-columns: 1fr; }
}
</style>
Le créateur de grilles ci-dessous génère automatiquement ce CSS quand vous configurez le responsive.
Inclure dans une page
<link rel="stylesheet" href="core/css/grid.css">
Aucun JavaScript nécessaire. Tout fonctionne en CSS pur.
- Les colonnes ne s'affichent pas côte à côte : vérifiez que
grid.cssest bien chargé. L'attributdata-colsdéfinit le nombre de colonnes. - Le bento est tout en une colonne : la grille bento passe à 1 colonne sous 478px. Testez sur un écran plus large ou réduisez le nombre de colonnes.
- Un item déborde de la grille : un
data-col-spansupérieur au nombre de colonnes disponibles provoque un débordement. Le span est réduit automatiquement en responsive.
Créateur de grilles
Configurez visuellement vos layouts grille et bento, puis copiez le code généré. Le code utilise les attributs data-* du framework et fonctionne immédiatement avec grid.css.