Col

Système de grille 12 colonnes basé sur Flexbox. Chaque enfant direct de .row occupe par défaut 100 % de la largeur. Les classes .col-{n} et leurs variantes responsives permettent de définir précisément la largeur de chaque colonne.

Stable Sans JS Responsive

Aperçu


LIVE PREVIEW — GRILLE 12 COLONNES
1
1
1
1
1
1
1
1
1
1
1
1
4
4
4
3
6
3
8
4
12

Structure HTML


CODE HTML
Contenu
Contenu

💡 Indispensable

La somme des colonnes dans une même .row doit être égale à 12 pour remplir exactement la ligne. Au-delà de 12, les colonnes excédentaires passent à la ligne suivante grâce au flex-wrap: wrap du .row.

👉 Enfants directs

La règle .row > * applique width: 100% et les paddings via --col-padding-x et --col-padding-y à tout enfant direct de .row, qu'il porte ou non une classe de colonne.

Classes CSS


CLASSE ÉLÉMENT DESCRIPTION
.row <div> Conteneur de ligne. Active display: flex et flex-wrap: wrap.
.col <div> Colonne flexible. S'étend pour occuper l'espace disponible (flex: 1 1 0). Plusieurs .col dans une même ligne se partagent l'espace équitablement.
.col-auto <div> Colonne dont la largeur s'adapte à son contenu (flex: 0 0 auto; width: auto).
.col-{1…12} <div> Colonne de largeur fixe. La largeur est calculée en pourcentage : n / 12 × 100%. Exemple : .col-6 = 50 %.
.col-{1…12}-{bp} <div> Variante responsive. La largeur ne s'applique qu'à partir du breakpoint spécifié (min-width). En dessous, l'élément occupe 100 % de la largeur.

Variantes


Colonnes flexibles égales

.col répartit automatiquement l'espace disponible entre les colonnes. Toutes les colonnes .col d'une même ligne ont la même largeur.

LIVE PREVIEW — .col HTML
.col
.col
.col
.col
.col
.col

Colonne adaptée au contenu

.col-auto prend uniquement la largeur nécessaire à son contenu. Les autres colonnes de la ligne se partagent l'espace restant.

LIVE PREVIEW — .col-auto HTML
.col
.col-auto (contenu)
.col

Colonnes de largeur fixe

Les classes .col-{1…12} définissent une largeur en fraction de 12. La somme des colonnes d'une ligne peut dépasser 12 — les éléments excédentaires passent automatiquement à la ligne suivante.

LIVE PREVIEW — .col-{n} HTML
col-2
col-10
col-4
col-8
col-6
col-6
col-3
col-3
col-3
col-3

Responsive


Les classes .col-{n}-{bp} s'activent uniquement à partir du breakpoint spécifié via une @media (min-width). En dessous du breakpoint, l'élément occupe 100% de la largeur (comportement mobile-first).

COLONNES RESPONSIVES HTML
Colonne A
Colonne B
Colonne A
Colonne B
Colonne C
Colonne A
Colonne B
Colonne C

ℹ️ Mobile-first

Les classes responsives utilisent min-width : elles s'appliquent à partir du breakpoint spécifié et au-delà. En dessous, aucune largeur fixe n'est définie — l'élément hérite du width: 100% posé par .row > *.

💡 Combinaison de breakpoints

Il est possible de cumuler plusieurs classes responsives sur un même élément : .col-6-sm et .col-4-lg par exemple. La classe du breakpoint le plus large prend le dessus à partir de sa valeur de min-width. Les breakpoints disponibles sont ceux définis dans $breakpoints.

CSS Custom Properties


TOKEN RÔLE
--col-padding-x Padding horizontal appliqué à chaque enfant direct de .row via la règle .row > *.
--col-padding-y Padding vertical appliqué à chaque enfant direct de .row via la règle .row > *.
EXEMPLE DE PERSONNALISATION CSS
/* Global variables */
:root {
  --col-padding-x: 0.75rem;
  --col-padding-y: 0;
}

Notes & bonnes pratiques


✅ À faire

Toujours placer les colonnes en enfants directs de .row. La règle .row > * cible uniquement les enfants directs pour appliquer les paddings et la largeur par défaut.

✅ À faire

Les grilles sont imbriquables : une colonne peut contenir une nouvelle .row avec ses propres colonnes. Les paddings sont alors cumulés — ajuster --col-padding-x si nécessaire sur la .row imbriquée.

❌ À éviter

Ne pas mélanger .col (flexible) et .col-{n} (largeur fixe) dans la même ligne sans en maîtriser l'effet : .col occupera tout l'espace restant après les colonnes fixes.

❌ À éviter

Ne pas poser de width, flex-basis ou flex manuellement sur une colonne qui porte déjà une classe .col-{n} ou .col : cela écrase les valeurs générées par le SCSS.


Grid · WEBDEV-UI DOCS / V1