CSS - Flexbox : Guide du débutant pour la mise en page flexible

Bonjour à tous, futurs maîtres du CSS ! Je suis ravi de vous guider dans cette incroyable aventure à la découverte du CSS Flexbox. En tant que quelqu'un qui enseigne l'informatique depuis des années, je peux vous dire que Flexbox est un de ces outils révolutionnaires qui rendra votre vie de designer web beaucoup plus simple. Alors, mettons-nous à l'eau !

CSS - Flexbox

Qu'est-ce que le CSS Flexbox ?

Imaginez que vous arrangez du mobilier dans une pièce. Vous voulez que tout s'adapte parfaitement, mais vous aussi la flexibilité de pouvoir bouger les choses facilement. C'est exactement ce que le CSS Flexbox fait pour la mise en page web ! C'est un modèle de mise en page qui vous permet de créer des structures de mise en page flexibles et réactives sans utiliser de flottants ou de positionnement.

Flexbox permet de :

  • Aligner les éléments verticalement et horizontalement
  • Réorganiser les éléments sans modifier le HTML
  • Créer des éléments de conteneur flexibles

Éléments du Flexbox

Avant de commencer à coder, comprenons les deux composants principaux du Flexbox :

  1. Conteneur Flex : C'est l'élément parent qui contient tous les éléments flex.
  2. Éléments Flex : Ce sont les éléments enfants à l'intérieur du conteneur flex.

Pensez à une boîte (conteneur) avec des jouets (éléments) à l'intérieur. La façon dont vous arrangez ces jouets dépend de la manière dont vous configurez vos propriétés Flexbox.

Mise en page de base avec Flexbox

Commençons avec un exemple simple :

<div class="flex-container">
<div class="flex-item">1</div>
<div class="flex-item">2</div>
<div class="flex-item">3</div>
</div>
.flex-container {
display: flex;
}

.flex-item {
padding: 20px;
background-color: #f1f1f1;
margin: 10px;
}

Dans cet exemple, nous avons créé un conteneur flex avec trois éléments flex à l'intérieur. La propriété display: flex; sur le conteneur est ce qui active Flexbox.

Mise en page verticale avec Flexbox

Vous voulez empiler vos éléments verticalement ? C'est aussi simple que cela !

.flex-container {
display: flex;
flex-direction: column;
}

Cette propriété flex-direction: column; change l'axe principal en vertical, empilant vos éléments de haut en bas.

Propriété justify-content de Flexbox

Maintenant, parlons de la positionnement. La propriété justify-content aligne les éléments horizontalement et accepte les valeurs suivantes :

Valeur Description
flex-start Les éléments sont alignés vers le début de la direction flex
flex-end Les éléments sont alignés vers la fin de la direction flex
center Les éléments sont centrés sur la ligne
space-between Les éléments sont répartis uniformément sur la ligne
space-around Les éléments sont répartis uniformément avec un espace égal autour d'eux
.flex-container {
display: flex;
justify-content: space-between;
}

Cela répartira vos éléments uniformément sur le conteneur.

Propriété align-items de Flexbox

Alors que justify-content fonctionne le long de l'axe principal, align-items fonctionne sur l'axe transversal. Il accepte ces valeurs :

Valeur Description
stretch Les éléments sont étirés pour s'adapter au conteneur (par défaut)
flex-start Les éléments sont placés au début de l'axe transversal
flex-end Les éléments sont placés à la fin de l'axe transversal
center Les éléments sont centrés sur l'axe transversal
baseline Les éléments sont alignés de sorte que leurs lignes de base s'alignent
.flex-container {
display: flex;
align-items: center;
}

Cela centre tous les éléments verticalement à l'intérieur du conteneur.

Centrage d'un div avec Flexbox

Voici un astuce sympa : centrer un div horizontalement et verticalement est un jeu d'enfant avec Flexbox !

.flex-container {
display: flex;
justify-content: center;
align-items: center;
height: 300px; /* ou toute hauteur */
}

Propriété flex-wrap de Flexbox

Parfois, vous pourriez vouloir que vos éléments passent à la ligne suivante s'ils ne tiennent pas. C'est là que rentre en jeu flex-wrap :

.flex-container {
display: flex;
flex-wrap: wrap;
}

Cela permet aux éléments de passer à la ligne suivante s'il n'y a pas assez de place.

Propriété align-self de Flexbox

Et si vous vouliez aligner un seul élément différemment ? align-self à la rescousse !

.flex-item:nth-child(2) {
align-self: flex-end;
}

Cela aligne le second élément en bas du conteneur, indépendamment des autres éléments.

Propriétés du conteneur Flexbox

Voici un tableau de toutes les propriétés Flexbox que vous pouvez appliquer au conteneur :

Propriété Description
display Définit un conteneur flex
flex-direction Définit la direction des éléments flex
flex-wrap Spécifie si les éléments flex doivent se plier
flex-flow Abréviation pour flex-direction et flex-wrap
justify-content Aligne les éléments flex le long de l'axe principal
align-items Aligne les éléments flex le long de l'axe transversal
align-content Aligne les lignes flex lorsque هناك un espace supplémentaire dans le conteneur

Propriétés des éléments Flexbox

Et voici les propriétés que vous pouvez appliquer aux éléments flex :

Propriété Description
order Spécifie l'ordre d'un élément flex
flex-grow Spécifie combien un élément flex va grossir par rapport aux autres
flex-shrink Spécifie combien un élément flex va se rétrécir par rapport aux autres
flex-basis Spécifie la longueur initiale d'un élément flex
flex Abréviation pour flex-grow, flex-shrink et flex-basis
align-self Spécifie l'alignement pour un élément flex spécifique

Et voilà ! Vous avez fait votre première grande étape dans le monde du CSS Flexbox. Souvenez-vous, comme apprendre à faire du vélo, cela pourrait sembler un peu instable au début, mais avec de la pratique, vous serez bientôt à fond la caisse.

N'ayez pas peur d'expérimenter avec ces propriétés. La meilleure façon d'apprendre est de faire. Essayez de créer différents layouts, jouez avec les propriétés, et voyez ce qui se passe. Avant de vous en rendre compte, vous serez capable de créer des layouts beaux et flexibles avec facilité !

Bonne flexion, futurs maîtres du CSS !

Credits: Image by storyset