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 !
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 :
- Conteneur Flex : C'est l'élément parent qui contient tous les éléments flex.
- É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