Liquid

Un gabarit responsive en Grid Layout

Liquid est un agencement CSS Grid Layout. Il permet de gérer facilement des éléments qui s'étendent sur toute la largeur de la page (appelés full-bleed, breakout, hero ou splash), tout en maintenant un contenu principal centré et lisible.

Fonctionnalités

Un élément de classe .splash s'étend sur toute la largeur disponible :
.splash {grid-column: liquid-start / liquid-end;}

Son contenu interne reste aligné avec la zone de contenu principale.

Les variantes .splash-start et .splash-end permettent de positionner des éléments qui s'étendent sur une partie de la largeur de la page, en partant des bords.

Un élément de classe .splash-start s'étend du bord gauche jusqu'à la fin de la zone de contenu :
.splash-start {grid-column: liquid-start / content-end;}

Un élément de classe .splash-end s'étend du début de la zone de contenu jusqu'au bord droit :
.splash-end {grid-column: content-start / liquid-end;}

Les variantes .splash-half-start et .splash-half-end permettent de positionner des éléments sur une moitié de la page.

Un élément de classe .splash-half-start s'étend du bord gauche jusqu'au milieu de la page :
.splash-half-start {grid-column: liquid-start / half;}

Un élément de classe .splash-half-end s'étend du milieu de la page jusqu'au bord droit :
.splash-half-end {grid-column: half / liquid-end;}

une image aléatoire
.liquid {
  --liquid-spacer: 2rem; /* Espacement minimal sur les côtés */
  --liquid-content: 1024px; /* Largeur maximale du contenu */

  display: grid;
  grid-template-columns:
   [liquid-start] minmax(var(--liquid-spacer), 1fr) /* Marge latérale gauche */
   [content-start] minmax(auto, calc(var(--liquid-content) / 2)) /* Moitié gauche du contenu */
   [half] minmax(auto, calc(var(--liquid-content) / 2)) /* Moitié droite du contenu */
   [content-end] minmax(var(--liquid-spacer), 1fr) /* Marge latérale droite */
   [liquid-end];
}

Comment ça marche ?

Pour bien visualiser, activez l'affichage de la grille via la case à cocher en bas de page.

Le système repose sur une grille CSS (display: grid) composée de quatre colonnes principales. Les lignes de séparation entre ces colonnes sont nommées pour faciliter le positionnement des éléments enfants :

Par défaut, les enfants directs du conteneur .liquid se placent dans la zone de contenu (entre content-start et content-end). Les classes spécifiques (.splash, .splash-start, etc.) utilisent la propriété grid-column pour indiquer sur quelles lignes de la grille elles doivent s'étendre. Par exemple, .splash-start {grid-column: liquid-start / content-end;} signifie que l'élément commencera sur la ligne liquid-start et se terminera sur la ligne content-end.

Ressources

minmax(var(--liquid-spacer), 1fr) minmax(var(--liquid-spacer), 1fr)
minmax(auto, calc(var(--liquid-content) / 2)) minmax(auto, calc(var(--liquid-content) / 2))