736 votes

Comment centrer facilement une <div> horizontalement à l'aide de CSS ?

J'essaie de centrer horizontalement un <div> sur une page et qu'il soit réglé sur une largeur minimale. Quelle est la façon la plus simple de procéder ? Je veux que l'élément <div> pour être en ligne avec le reste de ma page. Je vais essayer de dessiner un exemple :

page text page text page text page text
page text page text page text page text
               -------
               | div |
               -------
page text page text page text page text
page text page text page text page text

0 votes

Je n'aime aucune de ces réponses. Quelle est la solution si vous ne connaissez pas la largeur ? Il pourrait s'agir d'un seul mot, par exemple.

1 votes

Il est à noter que l'alignement n'aura aucun effet si la largeur est de 100%.

1 votes

Je viens de découvrir que webgenerator : howtocenterincss.com Il fait pour : vous tout ce que vous essayez de centrer, de la manière dont vous voulez que ce soit centré. ;)

818voto

Tivie Points 4581

Dans le cas d'un largeur non fixe (c'est-à-dire que vous ne connaissez pas l'espace qu'occupera la division).

#wrapper {
  background-color: green; /* for visualization purposes */
  text-align: center;
}
#yourdiv {
  background-color: red; /* for visualization purposes */
  display: inline-block;
}

<div id="wrapper">    
    <div id="yourdiv">Your text</div>
</div>

Gardez à l'esprit que la largeur de #yourdiv est dynamique -> il s'agrandit et se rétrécit pour s'adapter au texte qu'il contient.

Vous pouvez vérifier la compatibilité des navigateurs sur Caniuse

7 votes

J'utilise la solution "margin:0 auto" depuis longtemps, mais celle-ci est meilleure.

2 votes

@UriKlar Parce que margin : 0 auto est plus facile et plus sémantiquement correct.

1 votes

Cela a réglé mon problème lorsque margin:0 auto ne le ferait pas.

574voto

Antony Scott Points 7890

Dans la plupart des navigateurs, cela fonctionnera :

div.centre {
  width: 200px;
  display: block;
  background-color: #eee;
  margin-left: auto;
  margin-right: auto;
}

<div class="centre">Some Text</div>

Dans IE6, vous devrez ajouter un autre élément extérieur. div :

div.layout {
  text-align: center;
}

div.centre {
  text-align: left;
  width: 200px;
  background-color: #eee;
  display: block;
  margin-left: auto;
  margin-right: auto;
}

<div class="layout">
  <div class="centre">Some Text</div>
</div>

2 votes

Oui, en raison de bogues de mise en page dans IE avant IE7, vous devez le faire. Mais dans IE8, un simple text-align : center est suffisant :)

8 votes

Cela signifie qu'IE8 a toujours tort, car ce n'est pas du texte.

0 votes

La première solution fonctionnera dans IE6 s'il n'est pas en mode quirks (activé avec un commentaire/une déclaration XML standard comme première ligne de votre document XHTML).

62voto

Russ Cam Points 58168
margin: 0 auto;

comme ck a dit , largeur minimale n'est pas pris en charge par tous les navigateurs

1 votes

Notez que cela ne fonctionne que lorsque l'élément a également son propre nom de domaine. width la propriété fixée. Lorsque vous souhaitez que la largeur de l'élément soit dynamique (en fonction de son contenu), voir la réponse choisie.

29voto

cjk Points 27463
.center {
   margin-left: auto;
   margin-right: auto;
}

La largeur minimale n'est pas prise en charge de manière globale, mais peut être mise en œuvre à l'aide de

.divclass {
   min-width: 200px;
}

Ensuite, vous pouvez définir votre div comme étant

<div class="center divclass">stuff in here</div>

28voto

sjh Points 1316

CSS , HTML :

div.mydiv {width: 200px; margin: 0 auto}

<div class="mydiv">

    I am in the middle

</div>

Votre diagramme montre également un élément de niveau bloc (ce qu'est généralement un div), et non un élément en ligne.

Du haut de ma tête, min-width est supporté dans FF2+/Safari3+/IE7+. Il est possible de le faire pour IE6 en utilisant des feuilles de style CSS ou un simple bout de JS.

0 votes

Merci d'avoir clarifié la terminologie "en ligne". J'essayais de dire que je ne voulais pas qu'il flotte au-dessus du texte.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X