Flexbox introduction

. Introduction

Contrairement aux autres valeurs de display (display: inline, display: none, display: bloc) qui influencent uniquement l'affichage des éléments par rapport aux autres dans la page, la propriété display: flex; ou display: inline-flex; influence l'affichage de ses enfants en les positionnant dans un corridor sur l'axe des X ou Y, en modifiant leur dimension, leur ordre, etc. afin de remplir l'espace disponible le plus adéquatement possible.

La clé à retenir ici est que ce sont les balises enfants de l'élément ayant la propriété display: flex qui s'organisent à l'intérieur de celui-ci, en suivant les règles définies par Flexbox sur le parent. display: flex

Il faut d'abord déclarer la propriété display: flex; sur l'élément parent pour que les enfants soient affectés par les propriétés de Flexbox.

flex-direction

Comme son nom l'indique, la valeur de cette propriété définit la direction qu'auront ses enfants.

Valeurs possibles:

  • row➡️ (par défaut)
  • row-reverse⬅️
  • column⬇️
  • column-reverse ⬆️

flex-direction: row vs column


À gauche, flex-direction: row;
À droite, flex-direction: column;

flex-direction: row-reverse vs column-reverse


À gauche, flex-direction: row-reverse;
À droite, flex-direction: column-reverse;

flex-direction flex-direction

EXERCICE Flexbox Zombie - Chapitre 1 Les rudiments de l'arbalète.
justify-content

Un peu comme Word ou Google Doc, flexbox vous permet de justifier votre contenu horizontalement ↔️ afin atteindre l'affichage désiré.

Possibilités:

  • flex-start(par défaut)
  • flex-end
  • space-between
  • space-around
  • space-evenly
  • etc.

justify-content: flex-start vs justify-content: flex-end


À gauche, justify-content: flex-start;
À droite, justify-content: flex-end;

justify-content: center vs justify-content: space-between

.
À gauche, justify-content: center;
À droite, justify-content: space-between;

justify-content: space-around vs justify-content: space-evenly


À gauche, justify-content: space-around;
À droite, justify-content: space-evenly;

Ces deux valeurs peuvent se ressembler dans un espace restreint, mais remarquer comment avec justify-content: space-around; chaque élément a un espace équivalent à gauche et à droite et comment l'espace de chacun des éléments s'additionne.

justify-content-space-around

Tandis qu'en justify-content: space-evenly; l'espace n'est pas additionné, mais plutôt jumelé afin de créer des espaces identiques entre chaque élément.

justify-content-space-evenly
EXERCICE Flexbox Zombie - Chapitre 2 Justifier le laser!
align-items

Dans la même lignée que justify-content, mais cette fois à la verticale ↕️.

Possibilités:

  • stretch(par défaut)
  • flex-start
  • flex-end
  • center
  • etc.

align-items: stretch vs align-items: center


À gauche, align-items: stretch;
À droite, align-items: center;

align-items: flex-start vs align-items: flex-end


À gauche, align-items: flex-start;
À gauche, align-items: flex-end;

flex-direction flex-direction

EXERCICE Flexbox Zombie - Chapitre 3 L'alignement du laser!
😅
justify-content et align-items sont l’équivalent de brancher une clé USB en CSS. Deux ou trois tentatives sont souvent requises avant d’obtenir le résultat espéré.
align-self

La propriété align-self est pratiquement identique à la propriété align-items à la différence qu'elle s'applique sur un élément en particulier, et non le parent, afin de l'aligner de façon différente aux autres.

Elle accepte aussi les valeurs:

  • stretch
  • flex-start
  • flex-end
  • center
  • etc.
flex-direction flex-direction

EXERCICE Flexbox Zombie - Chapitre 4 Une de ces choses est différente.
Centrer un élément dans le body

Centrer un ou des éléments dans le body.

Pour centrer un élément verticalement dans le body, vous devez utilisez un de ces deux procédés afin de forcer le body à occuper toute la hauteur et ainsi pouvoir centrer l'élément dans la hauteur totale de la fenêtre.

html, body{ height: 100%; } ou encore body{ height: 100vh; }

Et si vous vouslez center verticalement les éléments dans div à l'intérieur du body et que ce divqui ne prend pas toute la hauteur du body, il vous faudra aussi forcer sa hauteur.

Inspecteur 🕵️‍♂️

L'inspecteur est d'une aide précieuse lorsque l'on manipule les éléments flexbox. Dans le DOM tree, les éléments en display: flex; ou display: inline-flex; sont mis en évidence grâce à un badge contenant le mot "flex". Lorsque cliqué, ce badge met en évidence la zone prise dans la page par le flexbox en question.

Lorsque l'on examine les propriétés CSS appliquées à cet élément on remarque à la droite de la propriété display un icône rappelant une grille. Lorsque cliqué, cet icône affiche différentes propriétés en lien avec flexbox, par exemple: flex-direction, justify-content, align-items, etc. Les valeurs disponibles pour ces propriétés sont illustrées avec des icônes permettant d'identifier ou de tester rapidement la valeur souhaitée.

EXERCICE Exercice flexbox cartes 01 Pour cet exercice, vous devez utiliser les propriétés de base apprises en classe aujourd'hui afin de recréer des cartes.
EXERCICE Exercice flexbox cartes 02 Pour cet exercice, vous devez utiliser les propriétés de base apprises en classe aujourd'hui afin de recréer des cartes.
EXERCICE Flexbox - Scrabble Potter Pour cet exercice, vous devez déplacer les lettres d’un jeu de Scrabble afin d’afficher correctement le nom de cinq des personnages de la...
EXERCICE Flexbox Froggy Niveau 1 à 13 Complétez les 13 premiers niveaux de Flexbox Froggy
EXERCICE Flexbox Defense Niveau 1 à 9 Complétez les 13 premiers niveaux de Flexbox Froggy
Résumé vidéo