Jak ustawić te dwa elementy div obok siebie?


110

Mam dwa elementy div, które nie są zagnieżdżone, jeden pod drugim. Oba znajdują się w jednym nadrzędnym elemencie DIV, który się powtarza. Więc zasadniczo:

<div id='parent_div_1'>
  <div class='child_div_1'></div>
  <div class='child_div_2'></div>
</div>

<div id='parent_div_2'>
  <div class='child_div_1'></div>
  <div class='child_div_2'></div>
</div>

<div id='parent_div_3'>
  <div class='child_div_1'></div>
  <div class='child_div_2'></div>
</div>

Chcę dostać każdą parę child_div_1i child_div_2obok siebie. W jaki sposób mogę to zrobić?

Odpowiedzi:


82
#parent_div_1, #parent_div_2, #parent_div_3 {
  width: 100px;
  height: 100px;
  border: 1px solid red;
  margin-right: 10px;
  float: left;
}
.child_div_1 {
  float: left;
  margin-right: 5px;
}

Sprawdź działający przykład pod adresem http://jsfiddle.net/c6242/1/


1
Chce, aby dzieci były ustawione obok siebie, a nie rodzice (przynajmniej tak rozumiałem ...)
ehdv

4
Nadal myślę, display: table-cellże wyniki będą bliższe temu, co miał na myśli (od tego czasu będą miały tę samą wysokość itp.), Ale ten sposób z pewnością zadziała.
ehdv

@ehdv display: table-cellnie jest obsługiwane w IE6 IE7. float: left; jest właściwym sposobem, aby to zrobić.
Hussein,

Właściwie właściwym sposobem na zrobienie tego w IE6,7 jest użycie <tr><td>, ponieważ każda inna opcja zepsuje się , gdy użytkownik zmieni rozmiar okna. W nowoczesnych przeglądarek display: inline-blockjest zwykle najlepszym rozwiązaniem.
John Henckel

126

Ponieważ elementy div są domyślnie blockelementami - co oznacza, że ​​zajmują pełną dostępną szerokość, spróbuj użyć -

display:inline-block;

divTeraz wygenerowana rolki czyli nie zakłócać przepływu elementów, lecz nadal będzie traktowany jako element bloku.

Uważam, że ta technika jest łatwiejsza niż walka z floats.

Zobacz ten samouczek, aby uzyskać więcej informacji - http://learnlayout.com/inline-block.html . Poleciłbym nawet poprzednie artykuły, które do tego prowadzą. (Nie, nie napisałem tego)


Bardzo podobało mi się to rozwiązanie. Moim jedynym problemem jest to, że wyrównuje dolną część obu elementów div zamiast wyrównywać górę. Czy istnieje również szybkie ustawienie?
Chris,

Sugerowałbym użycie 2 opakowań divo równej wysokości, aby zawartość w nich wyglądała na wyrównaną do góry.
Robin Maben

2
Zgadzam się. Jest to o wiele lepsze niż float:leftto, że daje o wiele więcej opcji bez ponownego definiowania całego układu. Rzeczy „po prostu działają” w ten sposób. Sprawdź to tutaj: jsfiddle.net/SrAQd/4
Jerry

12
Aby uzyskać wyrównanie w pionie, dodałbym "vertical-align: top;"
cdiggins

@Chris: Tak, zgadzam się z cdiggins. To powinno ci pomóc.
Robin Maben

44

Poniższy kod uważam za bardzo przydatny, może pomóc każdemu, kto szuka tutaj

<html>
<body>
    <div style="width: 50%; height: 50%; background-color: green; float:left;">-</div>
    <div style="width: 50%; height: 50%; background-color: blue; float:right;">-</div>
    <div style="width: 100%; height: 50%; background-color: red; clear:both">-</div>
</body>
</html>






2

Korzystanie z Flexbox

   #parent_div_1{
     display:flex;
     flex-wrap: wrap;
  }
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.