Propriété CSS flex-wrap
Baseline
Large disponibilité
*
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis septembre 2015.
* Certaines parties de cette fonctionnalité peuvent bénéficier de prise en charge variables.
La propriété CSS flex-wrap définit si les éléments flexibles sont forcés sur une seule ligne ou peuvent passer à la ligne sur plusieurs lignes. Si le retour à la ligne est autorisé, elle définit la direction dans laquelle les lignes sont empilées.
Exemple interactif
flex-wrap: nowrap;
flex-wrap: wrap;
flex-wrap: wrap-reverse;
flex-wrap: wrap balance;
<section class="default-example" id="default-example">
<div class="transition-all" id="example-element">
<div>Élément Un</div>
<div>Élément Deux</div>
<div>Élément Trois</div>
<div>Élément Quatre</div>
<div>Élément Cinq</div>
<div>Élément Six</div>
<div>Élément Sept</div>
</div>
</section>
#example-element {
border: 1px solid #c5c5c5;
width: 80%;
display: flex;
}
#example-element > div {
background-color: rgb(0 0 255 / 0.2);
border: 3px solid blue;
width: 60px;
margin: 10px;
}
La propriété raccourcie flex-flow permet de définir à la fois les propriétés flex-direction et flex-wrap, qui définissent respectivement les axes principal et transversal du conteneur flexible.
Syntaxe
/* Valeurs avec un mot-clé */
flex-wrap: nowrap;
flex-wrap: wrap;
flex-wrap: wrap-reverse;
flex-wrap: balance;
flex-wrap: wrap balance;
flex-wrap: balance wrap-reverse;
/* Valeurs globales */
flex-wrap: inherit;
flex-wrap: initial;
flex-wrap: revert;
flex-wrap: revert-layer;
flex-wrap: unset;
Valeurs
Cette propriété est définie comme une seule valeur parmi la liste suivante ou comme deux valeurs séparées par un espace lorsqu'on utilise balance :
nowrap-
Les éléments flexibles sont disposés sur une seule ligne, ce qui peut entraîner un dépassement du conteneur flexible. Il s'agit de la valeur initiale.
wrap-
Les éléments flexibles peuvent passer à la ligne sur plusieurs lignes.
wrap-reverse-
Se comporte de la même manière que
wrap, mais avec les lignes disposées dans l'ordre inverse. balance-
Définit que les éléments flexibles répartis sur plusieurs lignes sont distribués de manière à ce que les longueurs des lignes soient aussi similaires que possible. Si
balanceest défini comme seul mot-clé, l'autre mot-clé par défaut estwrap.
Description
La propriété flex-wrap est utilisée pour définir si les éléments flexibles enfants du conteneur flexible peuvent passer sur plusieurs lignes flexibles ou non et, si elle est définie sur wrap, si les enfants doivent être répartis de manière uniforme sur les lignes flexibles.
La valeur initiale de nowrap définit que tous les éléments doivent être disposés sur une seule ligne flexible, ce qui peut entraîner un dépassement du conteneur. Les mots-clés wrap et wrap-reverse empêchent le dépassement en définissant que les éléments flexibles peuvent s'écouler, ou passer, sur plusieurs lignes.
Avec wrap, le début de l'axe transversal est l'équivalent de inline-start ou block-start, en fonction de la valeur de flex-direction et du mode d'écriture actuel. Avec wrap-reverse, le début de l'axe transversal est l'équivalent de inline-end ou block-end.
Équilibrer la distribution des éléments flexibles
Par défaut, lorsque wrap ou wrap-reverse est défini chaque ligne flexible est remplie avec des éléments flexibles avant que les éléments ne passent à la ligne suivante. Cela peut entraîner une distribution inégale des éléments, la dernière ligne flexible étant composée de moins d'éléments. Si les valeurs de flex-grow de ces éléments sont non nulles, l'espace supplémentaire disponible est réparti entre ces quelques éléments, les rendant beaucoup plus grands que les éléments des lignes flexibles remplies.
Le mot-clé balance peut être utilisé pour répartir les éléments sur plusieurs lignes de manière plus uniforme. Facultativement, la propriété flex-line-count peut être utilisée pour définir le nombre minimum de lignes sur lesquelles les éléments équilibrés doivent être répartis.
Si balance est le seul mot-clé défini, l'autre mot-clé par défaut est wrap.
Un conteneur flexible enveloppant équilibré peut avoir une valeur flex-line-count appliquée pour définir le nombre minimum de lignes sur lesquelles les éléments flexibles doivent être répartis. La propriété flex-line-count n'a aucun effet si balance n'est pas défini dans flex-wrap.
Si balance est défini en même temps que nowrap, la propriété n'est pas valide.
Définition formelle
| Valeur initiale | nowrap |
|---|---|
| Applicabilité | conteneurs flexibles |
| Héritée | non |
| Valeur calculée | comme défini |
| Type d'animation | discrète |
Syntaxe formelle
flex-wrap =
nowrap |
[ wrap | wrap-reverse ] || balance
Exemples
>Définir les valeurs de retour à la ligne du conteneur flexible
HTML
<h4>Un exemple de <code>flex-wrap:wrap</code></h4>
<div class="contenu">
<div class="rouge">1</div>
<div class="vert">2</div>
<div class="bleu">3</div>
</div>
<h4>Un exemple de <code>flex-wrap:nowrap</code></h4>
<div class="contenu1">
<div class="rouge">1</div>
<div class="vert">2</div>
<div class="bleu">3</div>
</div>
<h4>Un exemple de <code>flex-wrap:wrap-reverse</code></h4>
<div class="contenu2">
<div class="rouge">1</div>
<div class="vert">2</div>
<div class="bleu">3</div>
</div>
CSS
/* Styles communs */
.contenu,
.contenu1,
.contenu2 {
color: white;
font: 100 24px/100px sans-serif;
height: 150px;
width: 897px;
text-align: center;
}
.contenu div,
.contenu1 div,
.contenu2 div {
height: 50%;
width: 300px;
}
.rouge {
background: orangered;
}
.vert {
background: yellowgreen;
}
.bleu {
background: steelblue;
}
/* Styles pour les boîtes flexibles*/
.contenu {
display: flex;
flex-wrap: wrap;
}
.contenu1 {
display: flex;
flex-wrap: nowrap;
}
.contenu2 {
display: flex;
flex-wrap: wrap-reverse;
}
Résultat
Démonstration du mot-clé balance
Cet exemple montre les effets du mot-clé balance dans la propriété flex-wrap et des différentes valeurs de flex-line-count.
HTML
Nous incluons un conteneur <div> avec une class de boite, qui contient dix éléments enfants <div>.
<div class="boite">
<div>Un</div>
<div>Deux</div>
<div>Trois</div>
<div>Quatre</div>
<div>Cinq</div>
<div>Six</div>
<div>Sept</div>
<div>Huit</div>
<div>Neuf</div>
<div>Dix</div>
</div>
Nous incluons également des contrôles pour modifier les fonctionnalités du conteneur flexible, notamment :
- Basculer
flex-wrapentre les valeurswrapetwrap-reverse. - Activer et désactiver le mot-clé
balance. - Modifier la valeur de
flex-line-count.
Nous avons masqué le code HTML et JavaScript par souci de concision.
CSS
Nous appliquons display: flex à .boite pour le transformer en conteneur flexible, puis définissons des valeurs de flex-wrap et de flex-line-count afin que les éléments enfants flexibles se répartissent uniformément sur au moins trois lignes flexibles. Vous pouvez modifier les valeurs dans la démonstration interactive. Nous définissons également une valeur de flex égale à 1 1 150px sur les éléments enfants flexibles afin qu'ils aient une largeur de base de 150px, l'espace restant étant réparti uniformément entre les éléments de la même ligne flexible.
.boite {
display: flex;
flex-wrap: wrap balance;
flex-line-count: 3;
}
.boite > * {
flex: 1 1 150px;
}
Nous avons masqué le reste du code CSS par souci de concision.
Résultats
Modifiez les paramètres des contrôles du formulaire pour voir leur effet sur le résultat. Notez que :
- Basculer entre
wrapetwrap-reversemodifie la direction dans laquelle les lignes flexibles sont disposées le long de l'axe transversal. - Définir
balancerépartit uniformément les éléments flexibles sur les lignes flexibles disponibles. - Modifier la valeur de
flex-line-countmodifie le nombre minimal de lignes sur lesquelles les éléments sont répartis. La propriétéflex-line-count, et donc le curseur, n'a aucun effet sibalancen'est pas coché. - Comme les éléments flexibles sont répartis par défaut sur quatre lignes flexibles, définir
flex-line-countsur une valeur inférieure à5n'a aucun effet. Les valeurs de5à10ajoutent une ligne flexible supplémentaire. - Comme il y a 10 éléments flexibles, les valeurs de
flex-line-countsupérieures ou égales à10ont toutes le même effet — un élément est placé sur chacune des 10 lignes flexibles.
Spécifications
| Spécification |
|---|
| CSS Flexible Box Layout Module Level 1> # flex-wrap-property> |
Compatibilité des navigateurs
Voir aussi
- La propriété
flex-direction - La propriété raccourcie
flex-flow - Concepts de base des boîtes flexibles
- Maîtriser le retour à la ligne des éléments flexibles
- Le module du modèle de boîte flexible CSS