Gérez la mise en plage, l'alignement et les dimensions des colonnes et du mécanisme de grid en général. Nous utilisons ici la technique dite Flexbox.
Déclarer un conteneur flexbox induit des comportements sur ses enfants.
.d-flex.d-inline-flex
.d-sm-flex.d-sm-inline-flex
.d-md-flex.d-md-inline-flex
.d-lg-flex.d-lg-inline-flex
.d-xl-flex.d-xl-inline-flex
.d-xxl-flex.d-xxl-inline-flex
Il est possible de préciser la direction row (horizontal) ou column (vertical) à l'agencement des blocs.
La notion de reverse permet d'inverser l'ordre d'affichage (le dernier passe en premier, etc...).
<div class="d-flex flex-row mb-3"> <div class="p-2">Flex item 1</div> <div class="p-2">Flex item 2</div> <div class="p-2">Flex item 3</div> </div> <div class="d-flex flex-row-reverse"> <div class="p-2">Flex item 1</div> <div class="p-2">Flex item 2</div> <div class="p-2">Flex item 3</div> </div>
<div class="d-flex flex-column mb-3"> <div class="p-2">Flex item 1</div> <div class="p-2">Flex item 2</div> <div class="p-2">Flex item 3</div> </div> <div class="d-flex flex-column-reverse"> <div class="p-2">Flex item 1</div> <div class="p-2">Flex item 2</div> <div class="p-2">Flex item 3</div> </div>
.flex-row.flex-row-reverse.flex-column.flex-column-reverse
.flex-sm-row.flex-sm-row-reverse.flex-sm-column.flex-sm-column-reverse
.flex-md-row.flex-md-row-reverse.flex-md-column.flex-md-column-reverse
.flex-lg-row.flex-lg-row-reverse.flex-lg-column.flex-lg-column-reverse
.flex-xl-row.flex-xl-row-reverse.flex-xl-column.flex-xl-column-reverse
.flex-xxl-row.flex-xxl-row-reverse.flex-xxl-column.flex-xxl-column-reverse
Possibilité d'interagir sur justify-content pour gérer l'alignement dans l'axe X ou Y.
Pas de gestion via des top / right / bottom / left mais plutôt start, end, center, between et around.
<div class="d-flex justify-content-start">...</div> <div class="d-flex justify-content-end">...</div> <div class="d-flex justify-content-center">...</div> <div class="d-flex justify-content-between">...</div> <div class="d-flex justify-content-around">...</div> <div class="d-flex justify-content-evenly">...</div>
.justify-content-start.justify-content-end.justify-content-center.justify-content-between.justify-content-around.justify-content-evenly
.justify-content-sm-start.justify-content-sm-end.justify-content-sm-center.justify-content-sm-between.justify-content-sm-around.justify-content-sm-evenly
.justify-content-md-start.justify-content-md-end.justify-content-md-center.justify-content-md-between.justify-content-md-around.justify-content-md-evenly
.justify-content-lg-start.justify-content-lg-end.justify-content-lg-center.justify-content-lg-between.justify-content-lg-around.justify-content-lg-evenly
.justify-content-xl-start.justify-content-xl-end.justify-content-xl-center.justify-content-xl-between.justify-content-xl-around.justify-content-xl-evenly
.justify-content-xxl-start.justify-content-xxl-end.justify-content-xxl-center.justify-content-xxl-between.justify-content-xxl-around.justify-content-xxl-evenly
Utilisez align-items pour gérer l'alignement sur l'axe X ou Y (en fonction du mode).
Les choix sont entre start, end, center, baseline et stretch.
<div class="d-flex align-items-start">...</div> <div class="d-flex align-items-end">...</div> <div class="d-flex align-items-center">...</div> <div class="d-flex align-items-baseline">...</div> <div class="d-flex align-items-stretch">...</div>
.align-items-start.align-items-end.align-items-center.align-items-baseline.align-items-stretch
.align-items-sm-start.align-items-sm-end.align-items-sm-center.align-items-sm-baseline.align-items-sm-stretch
.align-items-md-start.align-items-md-end.align-items-md-center.align-items-md-baseline.align-items-md-stretch
.align-items-lg-start.align-items-lg-end.align-items-lg-center.align-items-lg-baseline.align-items-lg-stretch
.align-items-xl-start.align-items-xl-end.align-items-xl-center.align-items-xl-baseline.align-items-xl-stretch
.align-items-xxl-start.align-items-xxl-end.align-items-xxl-center.align-items-xxl-baseline.align-items-xxl-stretch
Utilisez align-self pour gérer l'alignement individuel d'un élément
Les choix sont entre start, end, center, baseline et stretch.
<div class="align-self-start">Aligned flex item</div> <div class="align-self-end">Aligned flex item</div> <div class="align-self-center">Aligned flex item</div> <div class="align-self-baseline">Aligned flex item</div> <div class="align-self-stretch">Aligned flex item</div>
.align-self-start.align-self-end.align-self-center.align-self-baseline.align-self-stretch
.align-self-sm-start.align-self-sm-end.align-self-sm-center.align-self-sm-baseline.align-self-sm-stretch
.align-self-md-start.align-self-md-end.align-self-md-center.align-self-md-baseline.align-self-md-stretch
.align-self-lg-start.align-self-lg-end.align-self-lg-center.align-self-lg-baseline.align-self-lg-stretch
.align-self-xl-start.align-self-xl-end.align-self-xl-center.align-self-xl-baseline.align-self-xl-stretch
.align-self-xxl-start.align-self-xxl-end.align-self-xxl-center.align-self-xxl-baseline.align-self-xxl-stretch
La classe .flex-fill, lorsqu'elle est apposée sur plusieurs éléments siblings, les contraint à occuper tout l'espace disponible avec une répartition en fonction des contenus.
<div class="d-flex"> <div class="p-2 flex-fill">Flex item with a lot of content</div> <div class="p-2 flex-fill">Flex item</div> <div class="p-2 flex-fill">Flex item</div> </div>
.flex-fill
.flex-sm-fill
.flex-md-fill
.flex-lg-fill
.flex-xl-fill
.flex-xxl-fill
Le .flex-grow-* sert à activer/désactiver l'extension d'un élément sur tout l'espace disponible.
Le .flex-shrink-* sert à activer/désactiver la réduction d'un élément pour laisser l'espace disponible aux autres.
<div class="d-flex labo-col-item"> <div class="p-2 flex-grow-1">Flex item</div> <div class="p-2">Flex item</div> <div class="p-2">Third flex item</div> </div>
<div class="d-flex"> <div class="p-2 w-100">Flex item</div> <div class="p-2 flex-shrink-1">Flex item</div> </div>
.flex-grow-0.flex-grow-1.flex-shrink-0.flex-shrink-1
.flex-sm-grow-0.flex-sm-grow-1.flex-sm-shrink-0.flex-sm-shrink-1
.flex-md-grow-0.flex-md-grow-1.flex-md-shrink-0.flex-md-shrink-1
.flex-lg-grow-0.flex-lg-grow-1.flex-lg-shrink-0.flex-lg-shrink-1
.flex-xl-grow-0.flex-xl-grow-1.flex-xl-shrink-0.flex-xl-shrink-1
.flex-xxl-grow-0.flex-xxl-grow-1.flex-xxl-shrink-0.flex-xxl-shrink-1
L'ajout de marge automatique sur des éléments permet des agencements intéressants.
Voici 3 exemples (sans marge auto, marge droite auto sur 1er item et marge gauche sur dernier item).
<div class="d-flex mb-3"> <div class="p-2">Flex item</div> <div class="p-2">Flex item</div> <div class="p-2">Flex item</div> </div> <div class="d-flex mb-3"> <div class="mr-auto p-2">Flex item</div> <div class="p-2">Flex item</div> <div class="p-2">Flex item</div> </div> <div class="d-flex mb-3"> <div class="p-2">Flex item</div> <div class="p-2">Flex item</div> <div class="ml-auto p-2">Flex item</div> </div>
Sur le même principe mais à la vertical en associant align-items, flex-direction:column, et margin-top:auto ou margin-bottom:auto.
<div class="d-flex align-items-start flex-column mb-3" style="height: 200px;"> <div class="mb-auto p-2">Flex item</div> <div class="p-2">Flex item</div> <div class="p-2">Flex item</div> </div> <div class="d-flex align-items-end flex-column mb-3" style="height: 200px;"> <div class="p-2">Flex item</div> <div class="p-2">Flex item</div> <div class="mt-auto p-2">Flex item</div> </div>
Le flex-wrap permet d'indiquer quel niveau de retour à la ligne l'on souhaite.
Un .flex-nowrap empêche le retour à la ligne et débordera du conteneur.
Un .flex-wrap autorisera le retour.
Le reverse inversera l'ordre d'affichage.
<div class="d-flex flex-nowrap"> ... </div>
<div class="d-flex flex-wrap"> ... </div>
<div class="d-flex flex-wrap-reverse"> ... </div>
.flex-nowrap.flex-wrap.flex-wrap-reverse
.flex-sm-nowrap.flex-sm-wrap.flex-sm-wrap-reverse
.flex-md-nowrap.flex-md-wrap.flex-md-wrap-reverse
.flex-lg-nowrap.flex-lg-wrap.flex-lg-wrap-reverse
.flex-xl-nowrap.flex-xl-wrap.flex-xl-wrap-reverse
.flex-xxl-nowrap.flex-xxl-wrap.flex-xxl-wrap-reverse
Il est possible de modifier l'ordre d'affichage des éléments d'un flex en jouant sur le paramètre order.
<div class="d-flex flex-nowrap"> <div class="order-3 p-2">First flex item</div> <div class="order-2 p-2">Second flex item</div> <div class="order-1 p-2">Third flex item</div> </div>
.order-0.order-1.order-2.order-3.order-4.order-5.order-6.order-7.order-8.order-9.order-10.order-11.order-12
.order-sm-0.order-sm-1.order-sm-2.order-sm-3.order-sm-4.order-sm-5.order-sm-6.order-sm-7.order-sm-8.order-sm-9.order-sm-10.order-sm-11.order-sm-12
.order-md-0.order-md-1.order-md-2.order-md-3.order-md-4.order-md-5.order-md-6.order-md-7.order-md-8.order-md-9.order-md-10.order-md-11.order-md-12
.order-lg-0.order-lg-1.order-lg-2.order-lg-3.order-lg-4.order-lg-5.order-lg-6.order-lg-7.order-lg-8.order-lg-9.order-lg-10.order-lg-11.order-lg-12
.order-xl-0.order-xl-1.order-xl-2.order-xl-3.order-xl-4.order-xl-5.order-xl-6.order-xl-7.order-xl-8.order-xl-9.order-xl-10.order-xl-11.order-xl-12
.order-xxl-0.order-xxl-1.order-xxl-2.order-xxl-3.order-xxl-4.order-xxl-5.order-xxl-6.order-xxl-7.order-xxl-8.order-xxl-9.order-xxl-10.order-xxl-11.order-xxl-12
Utilisez align-content en complément des utilitaires de flexbox pour aligner les éléments sur l'axe transversal.
Choix de valeur entre start, end, center, between, around et stretch.
<div class="d-flex align-content-start flex-wrap"> ... </div>
<div class="d-flex align-content-end flex-wrap">...</div>
<div class="d-flex align-content-center flex-wrap">...</div>
<div class="d-flex align-content-between flex-wrap">...</div>
<div class="d-flex align-content-around flex-wrap">...</div>
<div class="d-flex align-content-stretch flex-wrap">...</div>
.align-content-start.align-content-end.align-content-center.align-content-between.align-content-around.align-content-stretch
.align-content-sm-start.align-content-sm-end.align-content-sm-center.align-content-sm-between.align-content-sm-around.align-content-sm-stretch
.align-content-md-start.align-content-md-end.align-content-md-center.align-content-md-between.align-content-md-around.align-content-md-stretch
.align-content-lg-start.align-content-lg-end.align-content-lg-center.align-content-lg-between.align-content-lg-around.align-content-lg-stretch
.align-content-xl-start.align-content-xl-end.align-content-xl-center.align-content-xl-between.align-content-xl-around.align-content-xl-stretch
.align-content-xxl-start.align-content-xxl-end.align-content-xxl-center.align-content-xxl-between.align-content-xxl-around.align-content-xxl-stretch