Derniers tutoriels de développement web
 

CSS3 Flexible Box


CSS3 Flexbox

Boîtes souples, ou flexbox , est un nouveau mode de mise en page dans CSS3.

L' utilisation de flexbox assure que les éléments se comportent de façon prévisible lorsque la mise en page doit accueillir différentes tailles d'écran et les différents dispositifs d'affichage.

Pour de nombreuses applications, le modèle de boîte souple apporte une amélioration par rapport au modèle de bloc en ce qu'il ne pas utiliser des flotteurs, ni ne les marges de l'effondrement du conteneur flexible avec les marges de son contenu.


support du navigateur

Les chiffres du tableau indiquent la première version du navigateur qui prend en charge pleinement la fonctionnalité.

Numbers suivis par -webkit- ou -moz- précisent la première version qui a travaillé avec un préfixe.

Propriété
Basic support
(single-line flexbox)
29.0
21.0 -webkit-
11.0 22.0
18.0 -moz-
6.1 -webkit- 12.1 -webkit-
Multi-line flexbox 29.0
21.0 -webkit-
11.0 28.0 6.1 -webkit- 17.0
15.0 -webkit-
12.1

CSS3 Flexbox Concepts

Flexbox se compose de conteneurs flexibles et des éléments flexibles.

Un conteneur flexible est déclarée par le réglage de la display propriété d'un élément soit flex (rendu sous forme de bloc) ou inline-flex (rendu en ligne).

A l'intérieur d'un conteneur flexible il y a un ou plusieurs éléments flexibles.

Remarque: Tout l' extérieur d' un conteneur flexible et à l' intérieur d' un élément flexible est rendu comme d' habitude. Flexbox définit comment les éléments flex sont mis à l'intérieur d'un conteneur flexible.

articles Flex sont positionnés à l'intérieur d'un conteneur flexible le long d'une conduite flexible. Par défaut il n'y a qu'une seule ligne flex par conteneur flex.

L'exemple suivant montre trois éléments flexibles. Ils sont positionnés par défaut: le long de la ligne flex horizontal, de gauche à droite:

Exemple

<!DOCTYPE html>
<html>
<head>
<style>
.flex-container {
    display: -webkit-flex;
    display: flex;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

.flex-item {
    background-color: cornflowerblue;
    width: 100px;
    height: 100px;
    margin: 10px;
}
</style>
</head>
<body>

<div class="flex-container">
  <div class="flex-item">flex item 1</div>
  <div class="flex-item">flex item 2</div>
  <div class="flex-item">flex item 3</div>
</div>

</body>
</html>

Essayez - le vous - même »

Il est également possible de modifier la direction de la ligne flexible.

Si nous avons mis la direction des biens à rtl ( de droite à gauche), le texte est tiré de droite à gauche, et aussi la ligne flex change de direction, qui va changer la mise en page:

Exemple

body {
    direction: rtl;
}

.flex-container {
    display: -webkit-flex;
    display: flex;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

.flex-item {
    background-color: cornflowerblue;
    width: 100px;
    height: 100px;
    margin: 10px;
}

Essayez - le vous - même »


Direction Flex

Le flex-direction propriété indique la direction des éléments flexibles à l' intérieur du conteneur flexible. La valeur par défaut de flex-direction est row ( de gauche à droite, de haut en bas).

Les autres valeurs sont les suivantes:

  • row-reverse - Si le mode d'écriture (direction) est de gauche à droite, les éléments flex sera aménagé droite à gauche
  • column - Si le système d'écriture est horizontal, les éléments de flexion sera mis verticalement
  • column-reverse - Identique à la colonne, mais en sens inverse

L'exemple suivant montre le résultat de l' aide de la row-reverse la valeur:

Exemple

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-flex-direction: row-reverse;
    flex-direction: row-reverse;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

Essayez - le vous - même »

L'exemple suivant montre le résultat de l' aide de la column valeur:

Exemple

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-flex-direction: column;
    flex-direction: column;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

Essayez - le vous - même »

L'exemple suivant montre le résultat de l' aide de la column-reverse la valeur:

Exemple

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-flex-direction: column-reverse;
    flex-direction: column-reverse;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

Essayez - le vous - même »


La propriété justify-contenu

La justify-content propriété aligne horizontalement les éléments du conteneur souple lorsque les éléments ne pas utiliser tout l' espace disponible sur l'axe principal.

Les valeurs possibles sont les suivantes:

  • flex-start - Valeur par défaut. Les éléments sont positionnés au début du conteneur
  • flex-end - Les éléments sont positionnés à l'extrémité du récipient
  • center - Les articles sont positionnés au centre du récipient
  • l' space-between - Les éléments sont positionnés avec un espace entre les lignes
  • space-around des articles sont positionnés avec un espace avant, entre et après les lignes -

L'exemple suivant montre le résultat de l' utilisation du flex-end valeur:

Exemple

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-justify-content: flex-end;
    justify-content: flex-end;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

Essayez - le vous - même »

L'exemple suivant montre le résultat de l' utilisation du center valeur:

Exemple

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-justify-content: center;
    justify-content: center;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

Essayez - le vous - même »

L'exemple suivant montre le résultat de l' aide de l' space-between la valeur:

Exemple

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-justify-content: space-between;
    justify-content: space-between;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

Essayez - le vous - même »

L'exemple suivant montre le résultat de l' aide de l' space-around de la valeur:

Exemple

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-justify-content: space-around;
    justify-content: space-around;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

Essayez - le vous - même »


Les align-éléments de propriété

Le align-items propriété aligne verticalement les éléments du conteneur souple lorsque les éléments ne pas utiliser tout l' espace disponible sur l'axe des croix.

Les valeurs possibles sont les suivantes:

  • stretch - Valeur par défaut. Les articles sont étirés pour remplir le récipient
  • flex-start - Les éléments sont positionnés dans la partie supérieure du récipient
  • flex-end - Les éléments sont positionnés au fond du récipient ,
  • center - Les articles sont positionnés au centre du récipient (verticalement)
  • baseline - Les éléments sont positionnés à la base du récipient

L'exemple suivant montre le résultat de l' utilisation du stretch valeur (ce qui est la valeur par défaut):

Exemple

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-align-items: stretch;
    align-items: stretch;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

Essayez - le vous - même »

L'exemple suivant montre le résultat de l' utilisation du flex-start valeur:

Exemple

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-align-items: flex-start;
    align-items: flex-start;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

Essayez - le vous - même »

L'exemple suivant montre le résultat de l' utilisation du flex-end valeur:

Exemple

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-align-items: flex-end;
    align-items: flex-end;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

Essayez - le vous - même »

L'exemple suivant montre le résultat de l' utilisation du center valeur:

Exemple

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-align-items: center;
    align-items: center;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

Essayez - le vous - même »

L'exemple suivant montre le résultat de l' aide de la baseline de baseline la valeur:

Exemple

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-align-items: baseline;
    align-items: baseline;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

Essayez - le vous - même »


La propriété flex-wrap

Le flex-wrap propriété spécifie si les éléments flexibles doivent envelopper ou non, s'il n'y a pas assez de place pour eux sur une ligne flexible.

Les valeurs possibles sont les suivantes:

  • nowrap - Valeur par défaut. Les éléments flexibles ne seront pas envelopper
  • wrap - Les éléments flexibles se terminera si nécessaire
  • wrap-reverse - Les éléments flexibles se terminera, si nécessaire, dans l' ordre inverse

L'exemple suivant montre le résultat de l' utilisation du nowrap valeur (ce qui est la valeur par défaut):

Exemple

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-flex-wrap: nowrap;
    flex-wrap: nowrap;
    width: 300px;
    height: 250px;
    background-color: lightgrey;
}

Essayez - le vous - même »

L'exemple suivant montre le résultat de l' utilisation du wrap valeur:

Exemple

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-flex-wrap: wrap;
    flex-wrap: wrap;
    width: 300px;
    height: 250px;
    background-color: lightgrey;
}

Essayez - le vous - même »

L'exemple suivant montre le résultat de l' utilisation du wrap-reverse la valeur:

Exemple

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-flex-wrap: wrap-reverse;
    flex-wrap: wrap-reverse;
    width: 300px;
    height: 250px;
    background-color: lightgrey;
}

Essayez - le vous - même »


La propriété align-contenu

Le align-content propriété modifie le comportement du flex-wrap propriété. Il est semblable à align-items , mais au lieu d'aligner les éléments flexibles, il aligne les lignes flexibles.

Les valeurs possibles sont les suivantes:

  • stretch - Valeur par défaut. Lignes étirer pour prendre l'espace restant
  • flex-start - Les lignes sont emballés vers le début du conteneur flexible
  • flex-end - Les lignes sont emballés vers l'extrémité du récipient flexible
  • center - Les lignes sont conditionnées vers le centre du récipient flexible
  • space-between l' space-between - Lignes sont répartis uniformément dans le récipient flexible
  • l' space-around - Les lignes sont réparties uniformément dans le récipient flexible, avec des espaces de demi-taille à chaque extrémité

L'exemple suivant montre le résultat de l' utilisation du center valeur:

Exemple

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-flex-wrap: wrap;
    flex-wrap: wrap;
    -webkit-align-content: center;
    align-content: center;
    width: 300px;
    height: 300px;
    background-color: lightgrey;
}

Essayez - le vous - même »


Flex Propriétés de l'élément

Commande

La order propriété spécifie l'ordre d'un élément flexible par rapport au reste des éléments flexibles à l' intérieur du même conteneur:

Exemple

.flex-item {
    background-color: cornflowerblue;
    width: 100px;
    height: 100px;
    margin: 10px;
}

.first {
    -webkit-order: -1;
    order: -1;
}

Essayez - le vous - même »

Marge

Réglage de la margin: auto; absorbera l' espace supplémentaire. Elle peut être utilisée pour pousser les éléments de flexion dans différentes positions.

Dans l'exemple suivant nous avons mis margin-right: auto; sur le premier élément flexible. Cela entraînera tout l'espace supplémentaire pour être absorbé à droite de cet élément:

Exemple

.flex-item {
    background-color: cornflowerblue;
    width: 75px;
    height: 75px;
    margin: 10px;
}

.flex-item:first-child {
    margin-right: auto;
}

Essayez - le vous - même »

centrage parfait

Dans l'exemple suivant, nous allons résoudre un problème presque tous les jours: un centrage parfait.

Il est très facile avec FlexBox. Réglage de la margin: auto; fera l'objet parfaitement centré dans les deux axes:

Exemple

.flex-item {
    background-color: cornflowerblue;
    width: 75px;
    height: 75px;
    margin: auto;
}

Essayez - le vous - même »

alignez-auto

Le align-self propriété d'éléments flexibles remplace align-éléments de la propriété du conteneur flexible pour cet article. Il a les mêmes valeurs possibles que le align-items matériels.

L'exemple suivant définit différentes valeurs align-auto à chaque élément flexible:

Exemple

.flex-item {
    background-color: cornflowerblue;
    width: 60px;
    min-height: 100px;
    margin: 10px;
}

.item1 {
    -webkit-align-self: flex-start;
    align-self: flex-start;
}
.item2 {
    -webkit-align-self: flex-end;
    align-self: flex-end;
}

.item3 {
    -webkit-align-self: center;
    align-self: center;
}

.item4 {
    -webkit-align-self: baseline;
    align-self: baseline;
}

.item5 {
    -webkit-align-self: stretch;
    align-self: stretch;
}

Essayez - le vous - même »

fléchir

Le flex propriété spécifie la longueur de l'élément flexible, par rapport au reste des éléments flexibles à l' intérieur du même conteneur.

Dans l'exemple suivant, le premier élément flex consomme 2/4 de l'espace libre, et les deux autres éléments flex consommera 1/4 de l'espace libre de chacun:

Exemple

.flex-item {
    background-color: cornflowerblue;
    margin: 10px;
}

.item1 {
    -webkit-flex: 2;
    flex: 2;
}

.item2 {
    -webkit-flex: 1;
    flex: 1;
}

.item3 {
    -webkit-flex: 1;
    flex: 1;
}

Essayez - le vous - même »


Exemples

Autres exemples

Créer un site réactif avec FlexBox
Cet exemple montre comment créer un site Web avec la mise en page en réponse FlexBox.


CSS3 ēno Propriétés

Le tableau suivant dresse la liste des propriétés CSS utilisés avec FlexBox:

Property Description
display Specifies the type of box used for an HTML element
flex-direction Specifies the direction of the flexible items inside a flex container
justify-content Horizontally aligns the flex items when the items do not use all available space on the main-axis
align-items Vertically aligns the flex items when the items do not use all available space on the cross-axis
flex-wrap Specifies whether the flex items should wrap or not, if there is not enough room for them on one flex line
align-content Modifies the behavior of the flex-wrap property. It is similar to align-items, but instead of aligning flex items, it aligns flex lines
flex-flow A shorthand propert for flex-direction and flex-wrap
order Specifies the order of a flexible item relative to the rest of the flex items inside the same container
align-self Used on flex items. Overrides the container's align-items property
flex Specifies the length of a flex item, relative to the rest of the flex items inside the same container