Jak wyśrodkować element div w poziomie w nadrzędnym div


114

Jak wyśrodkować divpoziomo wewnątrz jego rodzica divz CSS?

<div id='parent' style='width: 100%;'>
 <div id='child' style='width: 50px; height: 100px;'>Text</div>
</div>

1
Oto dwie proste metody wyśrodkowania elementów div w elementach div, w pionie, poziomie lub w obu (czysty CSS): stackoverflow.com/a/31977476/3597276
— Michael Benjamin

Odpowiedzi:


158

Zakładam, że nadrzędny element DIV nie ma szerokości ani dużej szerokości, a element podrzędny ma mniejszą szerokość. Poniższe instrukcje ustawią marginesy na górze i na dole na zero, a boki tak, aby pasowały automatycznie. To skupia div.

div#child {
    margin: 0 auto;
}

@Znak. Czy wiesz, jak sprawić, by działał w IE6? IE6 naprawdę jest do bani, ale nadal niektórzy z niego korzystają.
— Bakhtiyor,

@Bakhtiyor: o ile pamiętam, tak. Jakie problemy widzisz? możesz otworzyć nowe pytanie, jeśli masz jakiś konkretny problem, który nie został wcześniej poruszony. Nie mam jednak dostępu do IE6, żeby to sprawdzić.
— Mark Embling,

3
@Bakhtiyor: faktycznie konieczności myślenia o tym, myślę, że w IE.old trzeba także zestaw text-align: center;na parentdiv, a następnie ustawić go z powrotem do lewej (lub cokolwiek) do childjednego. Nie jestem pewien, czy ten problem dotyczy IE6 ...
— Mark Embling,

@Mark & ​​@Bakhtiyor z jakiegoś powodu moje childdiv pozornie przesunięte w lewo - w porównaniu do przeglądarek, które są bardziej zgodne ze standardami - we wszystkich wersjach IE, które sprawdziłem (IE6-8). I text-align: center;dla parenti text-align: left;dla childnaprawiono to dla wszystkich tych wersji.
— brookmarker

8
<div id='parent' style='width: 100%;text-align:center;'>
 <div id='child' style='width:50px; height:100px;margin:0px auto;'>Text</div>
</div>

2
To rozwiązanie obsługuje IE 6, ale nie zapomnij dodać text-align:left;do div
— #child

1
text-align:centerdo elementu DIV dziecka czy DIV nadrzędnego?
— Anish Nair

6

Po prostu z ciekawości, jeśli chcesz wyśrodkować dwa lub więcej elementów div (tak, aby znajdowały się obok siebie w środku), oto jak to zrobić:

<div style="text-align:center;">
    <div style="border:1px solid #000; display:inline-block;">Div 1</div>
    <div style="border:1px solid red; display:inline-block;">Div 2</div>
</div>   

4

Możesz użyć wartości „auto” dla lewego i prawego marginesu, aby przeglądarka rozdzieliła dostępne miejsce równomiernie po obu stronach wewnętrznego elementu div:

<div id='parent' style='width: 100%;'>
   <div id='child' style='width: 50px; height: 100px; margin-left: auto; margin-right: auto'>Text</div>
</div>

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.