Modèle de Boîte Flexible en CSS : Utiliser Flexbox permet de rendre votre mise en page plus dynamique et adaptable aux différents formats d’écran. Comprendre et maîtriser le modèle de boîte flexible avec Flexbox en CSS peut transformer vos compétences en design. Apprenons comment utiliser cette technologie en profondeur à l’aide d’exemples concrets de code.
Introduction à Flexbox en CSS
Flexbox en CSS, ou boîte flexible, est une méthode moderne de disposition qui offre une distribution d’espace efficace et un alignement puissant pour les éléments dans un conteneur, même quand leur taille est inconnue et/ou dynamique. Flexbox est conçu pour disposer des éléments le long d’un axe (soit horizontalement ou verticalement) et offre une flexibilité pour ajuster l’espace, la taille et l’alignement des éléments enfants.
La Structure de Base de Flexbox
Pour commencer avec Flexbox, il faut définir un conteneur flex et des éléments enfants. Voici la structure de base avec HTML et CSS :
<div class="container">
<div class="box">1</div>
<div class="box">2</div>
<div class="box">3</div>
</div>
.container {
display: flex;
background-color: lightgrey;
}
.box {
background-color: darkgrey;
border: 1px solid #000;
padding: 20px;
margin: 10px;
text-align: center;
}
Pour des détails sur le contenu de l’élément d’en-tête, consultez cet article.
Les Propriétés de Flexbox
Les propriétés flexbox sont divisées en deux catégories : les propriétés pour le conteneur et les propriétés pour les éléments enfants. Découvrez comment les utiliser pour améliorer votre maquette de site HTML.
Propriétés pour le Conteneur
Voici quelques-unes des principales propriétés à utiliser pour l’élément conteneur :
flex-direction
: définit l’axe principal pour placer les éléments (par défautrow
).justify-content
: contrôle l’alignement des éléments le long de l’axe principal.align-items
: contrôle l’alignement des éléments le long de l’axe transversal.flex-wrap
: permet aux éléments de couper et aller à la ligne suivante si nécessaire.
.container {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
}
Propriétés pour les Éléments Enfants
Les propriétés suivantes s’appliquent aux éléments enfants :
flex-grow
: indique combien d’espace supplémentaire un élément flexible devrait occuper.flex-shrink
: spécifie la capacité de l’élément à rétrécir.flex-basis
: définit la taille initiale d’un élément.align-self
: permet de remplacer l’alignement par défaut établi paralign-items
pour des éléments individuels.
.box {
flex-grow: 1;
flex-shrink: 1;
flex-basis: 100px;
align-self: flex-start;
}
Pour un exemple pratique, consultez notre guide sur les éléments de titre en HTML.
Disposition de Carte Flexbox
Utilisons Flexbox pour créer une disposition de carte réactive et élégante.
<div class="card-container">
<div class="card">Carte 1</div>
<div class="card">Carte 2</div>
<div class="card">Carte 3</div>
</div>
.card-container {
display: flex;
flex-wrap: wrap;
justify-content: space-around;
padding: 20px;
background-color: #f4f4f4;
}
.card {
flex: 1 1 200px; /* flex-grow, flex-shrink, flex-basis */
margin: 10px;
padding: 20px;
background-color: #fff;
border: 1px solid #ddd;
border-radius: 8px;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
text-align: center;
}
Disposition Réactive en Flexbox
Utiliser Flexbox permet de créer aisément des mises en page réactives qui s’ajustent selon la taille de l’écran. Voici un exemple de disposition en colonne sur les petits écrans et en lignes sur les grands écrans :
<div class="responsive-container">
<div class="item">Item 1</div>
<div class="item">Item 2</div>
<div class="item">Item 3</div>
</div>
.responsive-container {
display: flex;
flex-direction: column; /* Default to column on small screens */
padding: 10px;
background-color: #f9f9f9;
}
.item {
flex: 1;
margin: 10px;
padding: 20px;
background-color: #d1d1d1;
text-align: center;
}
/* Media Query for larger screens */
@media (min-width: 600px) {
.responsive-container {
flex-direction: row;
}
}
Exemples Avancés de Flexbox
Centrement Horizontal et Vertical
Flexbox est idéal pour centrer les éléments horizontalement et verticalement. Voici comment centrer une boîte à la fois horizontalement et verticalement dans un conteneur :
<div class="centered-container">
<div class="centered-box">Centré</div>
</div>
.centered-container {
display: flex;
justify-content: center;
align-items: center;
height: 100vh; /* Full height container */
background-color: #f0f0f0;
}
.centered-box {
padding: 50px;
background-color: #ff6347;
color: white;
text-align: center;
border-radius: 10px;
}
Disposition de Barre de Navigation
Créer une barre de navigation réactive avec Flexbox est très intuitif. Voici un exemple simple :
<nav class="navbar">
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
.navbar {
display: flex;
justify-content: space-around;
background-color: #333;
padding: 10px;
}
.navbar ul {
display: flex;
list-style: none;
padding: 0;
margin: 0;
}
.navbar li {
margin: 0 15px;
}
.navbar a {
color: white;
text-decoration: none;
padding: 8px 15px;
border-radius: 5px;
}
.navbar a:hover {
background-color: #575757;
}
Pour une lecture complémentaire, voyez notre guide complet sur la génération de pages HTML.
Disposition de Grille Flexible
Vous pouvez créer des gr