Powodem, dla którego obserwujesz zachowanie, które opisujesz, są instrukcje, które podajesz DIV.
Złammy go:
<div style="border: solid 1px navy; float: left;">
to opierając się na domyślne zachowanie dla wszystkiego z wyjątkiem granicy i przez pływające go, mówisz pole przypiąć się do lewego marginesu (z jego rodzicem, który jest tutaj uważany za ciało) niezależnie od tego, co tam jeszcze należy. Domyślna szerokość DIV wynosi 100% szerokości obiektu nadrzędnego (nadal znacznika body). Domyślną pozycją jest bycie następnym elementem bloku w przepływie - ponieważ nie ma żadnych innych elementów bloków, wyrównuje się on w pionie z górnym marginesem.
Następnie poprosił innego div, aby to zrobić:
<div style="background-color: blue; float:left;">
który jest zasadniczo to samo.Tutaj nie podałeś DIV ani nowej szerokości, ani żadnych dodatkowych instrukcji dotyczących tego, w którym miejscu układu powinny teraz iść, więc przylega on do lewego marginesu, a górny margines znajduje najbliższy element bloku, do którego należy przypiąć (nadal ciało).
Aby uzyskać te w kolejce obok siebie, wykonaj następujące czynności:
<style type="text/css">
.leftBox, .rightBox
{
width: 48%; /*leave some room for varying browser definitions */
border: 1px solid navy;
float: left;
display: inline; /* follow the semantic flow of the page and don't break the line */
clear: left; /* don't allow any other elements between you and the left margin */
}
.rightBox
{
border: none;
background-color: blue;
clear: right;
}
</style>
<div class="leftBox">
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
<li>Item 5</li>
</ul>
</div>
<div class="rightBox">
<p>
some other text</p>
</div>
Zmienia szerokość 2 div. Zobacz inną odpowiedź na alternatywne rozwiązanie: http://stackoverflow.com/questions/356835/working-with-divs-css#356877 –