Méthodes pour centrer un élément
- Placer un élément au centre à l’intérieur de son élément parent a longtemps été un problème délicat.
- Avec l’évolution de CSS, diverses solutions ont été proposées, et le choix est désormais plus large.
- Ce tutoriel aide à comprendre les compromis entre différentes approches et propose une stratégie pour gérer le centrage dans tous les scénarios.
Centrage avec les marges automatiques
- Lorsqu’on veut centrer un élément horizontalement, on peut utiliser des marges avec la valeur
auto.
- Il faut limiter la largeur de l’élément, et
fit-content permet à l’élément de s’adapter à son contenu.
- La propriété
margin-inline permet de définir margin-left et margin-right à auto en une seule fois.
Centrage avec Flexbox
- Flexbox offre un grand contrôle pour répartir un groupe d’éléments le long de l’axe principal.
- Il permet de centrer un seul élément horizontalement et verticalement, et le centrage est maintenu même si les éléments enfants ne tiennent pas dans le conteneur.
- La propriété
flex-direction permet de contrôler le sens d’empilement de plusieurs éléments enfants.
Centrage dans le viewport
- Il arrive qu’il faille centrer un élément dans le viewport plutôt que dans son conteneur parent.
- En utilisant
position: fixed et inset: 0px, on peut fixer l’élément au viewport, puis le centrer horizontalement et verticalement avec margin: auto.
Centrer un élément de taille inconnue
- Lorsqu’on ne connaît pas explicitement la taille d’un élément,
fit-content peut être utilisé pour réduire l’élément à la taille de son contenu.
Centrage avec CSS Grid
- Avec CSS Grid, la manière la plus concise de centrer un élément horizontalement et verticalement consiste à utiliser la propriété
place-content: center.
Différences avec Flexbox
- CSS Grid utilise un algorithme de mise en page différent, et cette complexité supplémentaire peut parfois poser problème.
- Flexbox calcule les pourcentages par rapport à l’élément parent, tandis que CSS Grid les calcule par rapport à la cellule de grille.
Centrer une pile d’éléments
- CSS Grid permet d’assigner plusieurs éléments à une même cellule, ce qui les empile de l’arrière vers l’avant.
Centrer du texte
- Le texte bénéficie d’un traitement particulier en CSS, et peut être centré avec la propriété
text-align.
Le futur du centrage
- La propriété
align-content est également en cours d’implémentation dans la mise en page Flow, ce qui permet de contrôler l’alignement du contenu dans le sens des blocs.
Au-delà des patterns
- Une compréhension approfondie de CSS permet de résoudre les problèmes avec intuition, plutôt qu’en s’appuyant uniquement sur la mémoire.
Choisir la bonne méthode
- Si vous voulez centrer horizontalement un seul élément, vous pouvez utiliser la stratégie des marges automatiques du layout Flow.
- Pour centrer une interface flottante comme une modale ou une bannière, vous pouvez utiliser un layout positionné avec des marges automatiques.
- Pour centrer une pile d’éléments, vous pouvez utiliser CSS Grid.
- Pour centrer du texte, vous pouvez utiliser
text-align, éventuellement en combinaison avec d’autres méthodes.
- Dans la plupart des autres cas, Flexbox convient parfaitement. C’est la méthode la plus polyvalente pour centrer un ou plusieurs enfants horizontalement et verticalement.
L’avis de GN⁺
- Le point le plus important de cet article est d’aider à comprendre les différentes méthodes de centrage en CSS.
- Grâce à l’évolution de CSS, les tâches de centrage autrefois complexes sont devenues bien plus simples, ce qui aide énormément les développeurs web.
- Comprendre et exploiter des technologies CSS modernes comme Flexbox et CSS Grid est devenu une compétence essentielle en design web et en mise en page.
3 commentaires
Maintenant que j’y pense, ça me gêne soudain aussi que, sur GeekNews, les articles ne soient pas centrés, ouin, haha
J’utilise souvent
place-items: center;, mais il y a visiblement plusieurs autres méthodes.Avis Hacker News
Résumé du premier commentaire :
<table>, mais en CSS cela donne l’impression d’être difficile.Résumé du deuxième commentaire :
Résumé du troisième commentaire :
displayetpositionsont fondamentales pour apprendre le positionnement.Résumé du quatrième commentaire :
Résumé du cinquième commentaire :
Résumé du sixième commentaire :
Résumé du septième commentaire :
Résumé du huitième commentaire :
Résumé du neuvième commentaire :
position: absolute,left: 50%,transform: translateX(-50%).Résumé du dixième commentaire :