Thématiques :
Tags :

Snippets : Les solutions pour centrer horizontalement et verticalement en CSS

Posé ici le vendredi 24 juillet 2009 à 12:15 par Jay Salvat

Centrage horizontal et vertical

En CSS, le centrage d'éléments dans la page n'est une mince affaire. Le centrage horizontal passe encore, mais pour le vertical, rien n'est prévu par défaut. Comme très souvent en CSS, il fiaut donc ruser.
Faisons un tour des solutions les plus simples.

Snippet

Centrage horizontal

Dans la plupart des cas, le centrage horizontal se règle simplement comme ça :

#myElement {
    margin:0 auto;
    width:200px;
}
Centrage horizontal

Seulement, si le positionnement devient absolu, la méthode simple ne fonctionne plus. L'idée est donc de placer l'élément à 50% du bord gauche auquel on retranchera la moitié de la largeur de celui-ci.

#myElement {
    width:200px;
    position:absolute;
    left:50%;
    margin-left:-100px;
}

Centrage vertical

CSS ne prévoit rien pour le centrage vertical. Le margin-left:auto qui fonctionne dans un sens ne fonctionne pas dans l'autre. Oubliez donc le margin-top:auto qui aurait été trop simple. Ici aussi, il faut ruser avec les marges négatives.

#myElement {
    height:100px;;
    position:absolute;
    top:50%;
    margin-top:-50px;
}
Centrage vertical

Centrage horizontal et vertical

Vous l'aurez compris, les deux méthodes peuvent être assemblées pour un centrage total.

#myElement {
    height:100px; width:200px;; 
    position:absolute;
    top:50%; left:50%;
    margin:-50px -100px;;
}
Centrage horizontal et vertical

Défaut de la méthode

Comme trop souvent en CSS, il faut connaitre la largeur et la hauteur de son élément pour pouvoir en ajuster les marges et placements. Aussi si la fenêtre est plus petite que l'élément, celui-ci sort du champs de vision par le haut. La solution idéale n'existe encore pas.

Trackbacks

0 trackback

Commentaires

3 commentaires

Salut,
j'ai pendant longtemps utilisé cette méthode mais le problème c'est que si le contenue à centrer est plus grand que la taille de la fenêtre du navigateur, une partie passe sous la barre d'URL.

J'ai trouvé cette exemple qui semble ne pas produire ce problème
D-graff.de/fricca/center.html

Sinon, félicitation pour ton blog

1. Par Michael le vendredi 24 juillet 2009 à 16:14

Merci de ce complément d'information Michael.

2. Par Jay Salvat le vendredi 24 juillet 2009 à 17:43

Salut,

j'ai juste voulus te remercié, je cherche exactement une solution pour centrer horizontalement un div en position absolute.

3. Par Mohamed le vendredi 14 août 2009 à 15:44

Obligatoire. Vrai nom apprécié.

Il ne sera ni affiché, ni spammé.

Votre blog ou votre site web.

Constructif, courtois et correctement écrit. SMS proscrit. Merci.