Mam działający kod tutaj: http://jsfiddle.net/WVm5d/ (może być konieczne powiększenie okna wyników, aby zobaczyć efekt wyrównania do środka)
Pytanie
Kod działa dobrze, ale nie lubię go mieć display: table;
. To jedyny sposób, aby uczynić centrum wyrównania klasy zawijania. Myślę, że byłoby lepiej, gdyby istniał sposób użycia display: block;
lub display: inline-block;
. Czy można rozwiązać centrum wyrównywania w inny sposób?
Dodanie stałej z do kontenera nie jest dla mnie opcją.
Wkleję też tutaj swój kod, jeśli łącze JS Fiddle zostanie zerwane w przyszłości:
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>
Spróbuj tego. Dodałem
text-align: center
do ciała idisplay:inline-block
owinąć, a następnie usunąłem twojedisplay: table
źródło
white-space: nowrap;
na nich.body
były wyśrodkowane na tekst? dla mnie to brzmi jak ogromna przesadaJeśli masz znak „
<div>
a”text-align:center;
, tekst w środku będzie wyśrodkowany względem szerokości tego elementu kontenera.inline-block
elementy są w tym celu traktowane jak tekst, więc zostaną również wyśrodkowane.źródło
Możesz to również zrobić z pozycjonowaniem, ustawić div rodzica na względny i div dziecka na absolutny.
źródło
Nie musisz używać „display: table”. Powodem, dla którego twoja próba automatycznego wyśrodkowania marginesu 0 nie działa, jest to, że nie podałeś szerokości.
To będzie działać dobrze:
Nie musisz określać display: block, ponieważ ten div będzie domyślnie blokowany. Prawdopodobnie możesz także utracić przepełnienie: ukryte.
źródło
Podobnie jak w przypadku odpowiedzi @ vijayscode, poziomo wyśrodkuje on element wbudowanego bloku (ale bez konieczności modyfikowania stylów jego rodzica):
źródło
Właśnie zmieniłem 2 parametry:
Demo na żywo
źródło
Świetnym artykułem, który okazał się dla mnie najlepszy, było dodanie% do rozmiaru
źródło
Po prostu użyj:
line-height:50px
Zamień „50px” na tę samą wysokość co div.
źródło
line-height
.text-align: center;
. Regulacja wysokości linii jest rozwiązaniem do centrowania w pionie, ale niezbyt solidnym rozwiązaniem dla bloku wbudowanego.