Flexbox est une technologie de mise en page puissante et flexible introduite en CSS3, qui permet de créer des mises en page complexes et réactives avec facilité. Contrairement aux modèles de mise en page traditionnels basés sur le flux, Flexbox offre un contrôle plus granulaire sur le positionnement, l’alignement et la distribution des éléments à l’intérieur d’un conteneur.
L’utilisation de Flexbox commence par la définition d’un conteneur flexible (ou « flex container ») qui englobe les éléments que l’on souhaite organiser. Pour ce faire, on applique la propriété display: flex;
au conteneur. Ensuite, les éléments enfants de ce conteneur (ou « flex items ») deviennent flexibles et peuvent être manipulés à l’aide des propriétés spécifiques à Flexbox.

Voici les principales propriétés utilisées avec Flexbox :
-
display: flex;
: Cette propriété est appliquée au conteneur pour activer le mode flexbox. -
flex-direction
: Elle détermine la direction principale dans laquelle les éléments flexibles sont disposés à l’intérieur du conteneur. Les valeurs courantes sontrow
(ligne),column
(colonne),row-reverse
(ligne inversée) etcolumn-reverse
(colonne inversée). -
justify-content
: Cette propriété contrôle l’alignement des éléments flexibles le long de l’axe principal (défini parflex-direction
). Elle peut prendre des valeurs telles queflex-start
,flex-end
,center
,space-between
etspace-around
. -
align-items
: Elle spécifie comment les éléments flexibles sont alignés le long de l’axe transversal (perpendiculaire à l’axe principal). Les valeurs typiques incluentflex-start
,flex-end
,center
,baseline
etstretch
. -
flex-wrap
: Cette propriété détermine si les éléments flexibles peuvent être enveloppés sur plusieurs lignes ou colonnes. Les valeurs possibles sontnowrap
,wrap
etwrap-reverse
. -
flex
: Elle est utilisée pour définir la flexibilité des éléments flexibles par rapport aux autres éléments flexibles à l’intérieur du même conteneur. -
align-content
: Si les éléments flexibles sont distribués sur plusieurs lignes ou colonnes, cette propriété contrôle leur alignement le long de l’axe transversal.
Pour mieux comprendre ces concepts, examinons quelques exemples pratiques :
Exemple 1: Disposition en ligne avec répartition uniforme des éléments
css.flex-container {
display: flex;
justify-content: space-between;
}
Dans cet exemple, les éléments à l’intérieur du conteneur flexible seront disposés sur une ligne, avec un espace égal entre chaque élément, grâce à justify-content: space-between
.
Exemple 2: Disposition en colonne avec alignement central
css.flex-container {
display: flex;
flex-direction: column;
align-items: center;
}
Ici, les éléments seront alignés verticalement au centre du conteneur, en utilisant flex-direction: column
pour spécifier une disposition en colonne et align-items: center
pour l’alignement central.
Exemple 3: Disposition en plusieurs lignes avec enroulement
css.flex-container {
display: flex;
flex-wrap: wrap;
}
Ce code permet aux éléments de s’enrouler sur plusieurs lignes si nécessaire, grâce à flex-wrap: wrap
.
Ces exemples illustrent quelques-unes des possibilités offertes par Flexbox en matière de mise en page web. Avec une compréhension approfondie de ces concepts et des propriétés associées, il est possible de créer des mises en page web complexes et réactives de manière efficace et élégante.
Plus de connaissances
Bien sûr, plongeons plus en profondeur dans les concepts de Flexbox en CSS, en explorant davantage de propriétés et en fournissant des exemples supplémentaires pour illustrer chaque concept.
Propriété flex-grow
La propriété flex-grow
spécifie la capacité d’un élément flexible à grandir pour remplir l’espace disponible dans le conteneur flexible. Par défaut, tous les éléments flexibles ont une valeur de 0
, ce qui signifie qu’ils ne vont pas s’étendre pour remplir l’espace supplémentaire. En attribuant une valeur numérique positive à flex-grow
, vous indiquez à l’élément combien d’espace supplémentaire il devrait occuper par rapport aux autres éléments flexibles dans le même conteneur.
Exemple:
css.flex-item {
flex-grow: 1;
}
Dans cet exemple, tous les éléments .flex-item
vont s’étendre également pour remplir l’espace disponible dans le conteneur.
Propriété flex-shrink
La propriété flex-shrink
définit la capacité d’un élément flexible à se rétrécir lorsqu’il n’y a pas assez d’espace dans le conteneur. Par défaut, tous les éléments flexibles ont une valeur de 1
, ce qui signifie qu’ils peuvent se rétrécir pour éviter le débordement du conteneur. En attribuant une valeur numérique positive à flex-shrink
, vous déterminez à quel point l’élément peut se rétrécir par rapport aux autres éléments flexibles dans le même conteneur.
Exemple:
css.flex-item {
flex-shrink: 2;
}
Dans cet exemple, les éléments .flex-item
auront une capacité de rétrécissement deux fois supérieure à celle des autres éléments flexibles dans le même conteneur.
Propriété flex-basis
La propriété flex-basis
définit la taille de base d’un élément flexible avant que l’espace supplémentaire ou manquant ne soit distribué. Elle peut être spécifiée en tant que valeur fixe (par exemple, 200px
) ou en pourcentage (par exemple, 50%
). Par défaut, la valeur est auto
, ce qui signifie que la taille de base est déterminée par la taille initiale de l’élément.
Exemple:
css.flex-item {
flex-basis: 200px;
}
Dans cet exemple, la taille de base de tous les éléments .flex-item
est fixée à 200px
.
Propriété order
La propriété order
permet de spécifier l’ordre dans lequel les éléments flexibles sont affichés à l’intérieur du conteneur flexible. Par défaut, tous les éléments ont une valeur de 0
, ce qui signifie qu’ils sont disposés dans l’ordre dans lequel ils apparaissent dans le code HTML. En attribuant une valeur numérique à order
, vous pouvez modifier cet ordre.
Exemple:
css.flex-item:nth-child(2) {
order: -1;
}
Dans cet exemple, le deuxième élément .flex-item
sera affiché en premier, avant tous les autres éléments, grâce à order: -1
.
Exemple Complet:
Considérons un exemple complet utilisant plusieurs de ces propriétés ensemble :
css.flex-container {
display: flex;
flex-wrap: wrap;
}
.flex-item {
flex: 1 0 200px; /* flex-grow flex-shrink flex-basis */
order: 1; /* order */
}
Dans cet exemple, tous les éléments à l’intérieur du conteneur flexible auront une flexibilité égale pour grandir ou se rétrécir, une taille de base de 200px
et seront disposés dans l’ordre spécifié.
En combinant ces propriétés avec celles mentionnées précédemment, vous pouvez créer des mises en page web sophistiquées et réactives avec Flexbox.