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>
1
2
3

Colonnes

Attribut / ClasseColonnes
data-cols="1" ou grid--11 colonne
data-cols="2" ou grid--22 colonnes
data-cols="3" ou grid--33 colonnes
data-cols="4" ou grid--44 colonnes
data-cols="5" ou grid--55 colonnes
data-cols="6" ou grid--66 colonnes

Gap (espacement)

Attribut / ClasseEspacement
data-gap="none" ou grid--gap-none0
data-gap="xs" ou grid--gap-xsvar(--space-2)
data-gap="sm" ou grid--gap-smvar(--space-4)
data-gap="md" ou grid--gap-mdvar(--space-6) — défaut
data-gap="lg" ou grid--gap-lgvar(--space-8)
data-gap="xl" ou grid--gap-xlvar(--space-12)

Alignement vertical

AttributEffet
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>
Span 2
1
Full width
AttributEffet
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>
Large
Normal
Normal
Wide
Tall
Normal

Tailles prédéfinies

AttributEffet
(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

AttributHauteur 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 :

LayoutDescription
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>
Mise en avant
Détail 1
Détail 2

Responsive

Toutes les grilles s'adaptent automatiquement :

  • ≤ 1024px : 5-6 colonnes → 3, bento → 3 colonnes
  • ≤ 768px : 3-6 colonnes → 2, bento → 2 colonnes, layouts prédéfinis → 1 colonne
  • ≤ 480px : tout passe en 1 colonne

Les spans trop larges pour l'écran sont automatiquement réduits.

Inclure dans une page

<link rel="stylesheet" href="core/css/grid.css">

Aucun JavaScript nécessaire. Tout fonctionne en CSS pur.