Site icon Lenny Obez

Centrer un élément en CSS

Illustration représentant un alignement de texte
⏱ 3 minutes | 📚 Facile

L’une des questions les plus posées concernant la manipulation de l’UI – ou la mise en forme d’une page, si vous préférez – est probablement celle du centrage horizontal et vertical d’un élément. Nous avons vu naître divers astuces au fil du temps afin de répondre à cette question, en voici quelques-unes :

Avec un tableau

Bien que devenu obsolète dans la mise en page d’un site web, la disposition en tableaux est toujours utilisée afin de – justement – créer un tableau.

* Pour utiliser cette manipulation, il est soit possible d’utiliser une balise <table> soit la créer de manière artificielle avec display: table.

En conclusion

Afin de centrer sur les deux axes, il suffira de mettre le code ci-dessous :

th, td {
    text-align: center;
    vertical-alin: middle;
}

Avec un affichage de type en ligne, boîte ou boîte en ligne

Plus connu dans sa langue d’origine, les éléments d’affichage de type block, inline ou encore inline-block ont une méthode de centrage un peu plus particulier.

Vous pouvez utiliser une position: absolute sur le container mais vous remarquerez que bien que l’élément s’approche du centre de son container, nous n’y sommes pas encore ! En cause, le point d’origine, ce dernier est utilisé pour les positionnements mais se situe au coin supérieur gauche de votre élément, or, pour que le centrage soit parfait, il faudrait que ce point d’origine se trouve au centre de l’élément, ce que l’on peut réaliser avec l’un des deux codes suivants:

Ci-dessous, une démonstration présentant un élément avec son point d’origine à sa position initiale, en survolant le cadre, le point d’origine se déplacera jusqu’au centre :





    
        
    
    
        
    



avec transform-origin: 50% 50%;

 

transform: translate(x); transform-origin: x;
Compatibilité
Sémantique


*² Cette propriété CSS ne fonctionne pas sur tous les éléments (les tracés vectoriels, par exemple).
*³ Là où transform-origin déplace le point d’origine, transform: translate ne fait que déplacer l’élément par rapport au point d’origine, sémantiquement, il est préférable d’utiliser transform-origin quand vous le pouvez.

En conclusion

Pour centrer verticalement et horizontalement avec les méthodes habituelles, il faudra utiliser:

.votreContainer { position: relative }

.votreElement {
    left: 50%;
    position: absolute;
    top: 50%;
    transform: translate(-50%, -50%);
}

Avec Flexbox

Grâce à la propriété display: flex, il est encore plus facile de centrer un élément dans un container:

*⁴ Pour utiliser cette manipulation, il est nécessaire d’activer la propriété display: flex sur un container parent.

En conclusion

Pour centrer verticalement et horizontalement en flexbox, il faudra utiliser:

.votreContainer { display: flex }

.votreElement { margin: auto }

Si cet article vous a aidé dans le positionnement de vos éléments, un partage et un commentaire sont toujours appréciés !

Quitter la version mobile