Skip to content

Latest commit

 

History

History

flexbox

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

README.md

Flexbox

Le Module Flexbox permet de contrôler la disposition des éléments verticalement ou horizontalement. En parallèle le navigateur essaie d'optimiser l'espace disponible. Grâce au flexbox, on sort facilement du modèle classique (le contenu qui s'affiche du haut en bas) vers un layout plus complexe.

Faisons ça ensemble

<div class="container">
  <div class="item item-1">...</div>
  <div class="item item-2">...</div>
  ...
  <div class="item item-9">...</div>
</div>

Step 1 : Élément "parent"

display

.container {
  display: flex;
}

flex-direction

Ici on établit l'axe principal d'un container flex sur lequel les items sont disposés. La valeur par défaut est row.

.container {
  flex-direction: row | row-reverse | column | column-reverse;
}

flex-wrap

Cette propriété définit si le container comprend une seule ligne ou plusieurs. La valeur par défaut est nowrap.

.container {
  flex-wrap: nowrap | wrap | wrap-reverse;
}

flex-wrap


flex-flow

Cette propriété est un raccourci des propriétés flex-direction et flex-wrap. La valeur par défaut est row nowrap.

/* exemple */
.container {
  flex-flow: column wrap;
}

justify-content 👈

Définit l'alignement le long de l'axe principal en distribuant l'espace qui reste libre. La valeur par défaut est flex-start.

.container {
  justify-content: flex-start | flex-end | center | space-between | space-around
    | space-evenly;
}

justify-content


align-items 👈

Définit la façon dont les items d'une ligne sont disposés le long de l'axe "secondaire". La valeur par défaut est stretch.

.container {
  align-items: stretch | flex-start | flex-end | center | baseline;
}
}

align-items


align-content

Aligne les lignes d'un container flex (si plus qu'une ligne). La valeur par défaut est stretch.

.container {
  align-content: flex-start | flex-end | center | space-between | space-around |
    space-evenly | stretch;
}

align-content


gap 👈

Raccourci pour row-gap column-gap permet de définir les espaces entre les éléments.

.container {
  gap: 1rem;
  /*
  row-gap: 1rem;
  column-gap: 1rem;
  */
}

Step 2 : Les "enfants"

order

Par défaut, les items flex sont disposés par ordre d'arrivée, order permet de changer l'ordre dans lequel ils apparaissent dans leur parent.
La valeur par défaut de tous les éléments est 0.

.item-2 {
  order: 1;
}

flex

Un raccourci de 3 propriétés à la fois flex-grow, flex-shrink et flex-basis.

Chaque élément enfant peut être étiré (c'est flex-grow qui est responsable à ça) ou réduit (et c'est flex-shrink qui est responsable à ça). La 3e propriété flex-basis correspond à la taille de base d'un élément.

La valeur par défaut est 0 1 auto

Playground flex

Et si ensuite j'ajoute

.item-2 {
  flex: 2;
  /* est équivalent à : */
  /*
  flex-grow: 2;
  flex-shrink: 1;
  flex-basis: 0%;
  */
}

.item-2 aura le droit à deux fois plus de l'espace restant.

https://codepen.io/alyra/pen/GRoZXEX


align-self

.item {
  align-self: auto | flex-start | flex-end | center | baseline | stretch;
}

https://codepen.io/alyra/pen/pogyOLJ


margin: auto

margin: auto; fait de la magie quand appliqué sur un élément enfant.

Valeur auto est interprété de la façon : j'ajoute autant de marge que possible, regardons :

https://codepen.io/alyra/pen/NWxNLmP

Playground "big title"

https://codepen.io/alyra/pen/jOWqepw


Ressources


Exercices