Tout développeur web débutant (et même expérimenté !) s’est déjà arraché les cheveux en essayant de centrer une simple <div> en CSS.
En théorie, ça semble simple. En pratique… c’est un casse-tête. Pourquoi ? Parce qu'il y a plusieurs manières de le faire, et elles ne fonctionnent pas toutes selon le contexte.
margin: auto;On pourrait penser qu’un simple :
.box {
width: 200px;
margin: auto;
}
fera l’affaire. Eh bien… non ! Ça ne marche que si la div a une largeur définie et que son parent est en display: block;. Pas très flexible.
text-align: center; (et son piège)Si vous essayez de centrer une div avec text-align: center;, mauvaise nouvelle : ça ne fonctionne que pour du texte, pas pour un élément block.
position: absolute;Une autre technique consiste à utiliser :
.box {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
Ça marche bien... sauf si le parent n'a pas une position définie ou si on veut un design responsive.
Avec display: flex;, le centrage devient (presque) un jeu d’enfant :
.parent {
display: flex;
justify-content: center;
align-items: center;
}
Facile, non ? Sauf si... on oublie que ça affecte tous les enfants du parent.
Encore plus simple avec CSS Grid :
.parent {
display: grid;
place-items: center;
}
Mais si le projet est ancien et qu'il faut supporter des navigateurs obsolètes... c'est un problème.
Le vrai problème, c’est qu’il n’y a pas UNE seule méthode universelle. Il faut toujours adapter en fonction du contexte, du type d’élément et du comportement attendu.
"Centrer une div en CSS, c’est un peu comme apprendre une recette de cuisine : il y a mille façons de faire, mais il faut trouver la bonne pour chaque plat."
Heureusement, avec Flexbox et Grid, les choses sont beaucoup plus simples aujourd’hui… mais pas toujours intuitives ! 😉