J'ai un code de travail ici: http://jsfiddle.net/WVm5d/ (vous devrez peut-être agrandir la fenêtre de résultat pour voir l'effet d'alignement au centre)
Question
Le code fonctionne bien mais je n'aime pas l'avoir display: table;
. C'est la seule façon dont je pouvais faire le centre d'alignement de la classe wrap. Je pense que ce serait mieux s'il y avait un moyen d'utiliser display: block;
ou display: inline-block;
. Est-il possible de résoudre le centre d'alignement d'une autre manière?
Ajouter un fixe avec au conteneur n'est pas une option pour moi.
Je vais également coller mon code ici si le lien JS Fiddle se casse à l'avenir:
body {
background: #bbb;
}
.wrap {
background: #aaa;
margin: 0 auto;
display: table;
overflow: hidden;
}
.sidebar {
width: 200px;
float: left;
background: #eee;
}
.container {
margin: 0 auto;
background: #ddd;
display: block;
float: left;
padding: 5px;
}
.box {
background: #eee;
border: 1px solid #ccc;
padding: 10px;
margin: 5px;
float: left;
}
.box:nth-child(3n+1) {
clear: left;
}
<div class="wrap">
<div class="sidebar">
Sidebar
</div>
<div class="container">
<div class="box">
Height1
</div>
<div class="box">
Height2<br />
Height2
</div>
<div class="box">
Height3<br />
Height3<br />
Height3
</div>
<div class="box">
Height1
</div>
<div class="box">
Height2<br />
Height2
</div>
<div class="box">
Height3<br />
Height3<br />
Height3
</div>
</div>
<div class="sidebar">
Sidebar
</div>
</div>
Essaye ça. J'ai ajouté
text-align: center
au corps etdisplay:inline-block
à envelopper, puis retiré votredisplay: table
la source
white-space: nowrap;
sur eux.body
soient placés au centre alignés sur le texte ?? cela ressemble à une énorme exagération pour moiSi vous avez un
<div>
avectext-align:center;
, tout texte à l'intérieur sera centré par rapport à la largeur de cet élément conteneur.inline-block
les éléments sont traités comme du texte à cet effet, ils seront donc également centrés.la source
Vous pouvez également le faire avec le positionnement, définir parent div sur relatif et enfant div sur absolu.
la source
Vous n'avez pas besoin d'utiliser "display: table". La raison pour laquelle votre marge: 0 tentative de centrage automatique ne fonctionne pas est que vous n'avez pas spécifié de largeur.
Cela fonctionnera très bien:
Vous n'avez pas besoin de spécifier display: block car ce div sera block par défaut. Vous pouvez aussi probablement perdre le débordement: caché.
la source
Semblable à la réponse de @ vijayscode, cela centrera horizontalement un élément de bloc en ligne (mais sans avoir besoin de modifier également les styles de son parent):
la source
Je viens de changer 2 paramètres:
Démo en direct
la source
Excellent article, j'ai trouvé ce qui fonctionnait le mieux pour moi était d'ajouter un% à la taille
la source
Utilisez simplement:
line-height:50px
Remplacez "50px" par la même hauteur que votre div.
la source
line-height
.text-align: center;
. Le réglage de la hauteur de ligne est une solution pour le centrage vertical, mais pas une solution très robuste pour un bloc en ligne.