您看到您描述的行爲的原因是因爲這些是您給予DIV的指示。
讓我們來分析一下:
<div style="border: solid 1px navy; float: left;">
這依賴於默認的行爲之外的所有邊界,並通過浮動的,那你就告訴框本身引腳到左邊距(它的父,這裏假設是身體),不管其他什麼屬於那裏。 DIV的默認寬度是父對象寬度的100%(仍然是body標籤)。默認位置將成爲流中的下一個塊元素 - 由於沒有其他任何塊元素,因此它將與頂部邊距垂直對齊。
然後你問另一位DIV做到這一點:
<div style="background-color: blue; float:left;">
基本上是同樣的事情。在這裏,你還沒有給出DIV一個新的寬度或任何額外的指令,說明它們現在應該佈局的位置,所以它將自己固定到左邊界,並且它的頂部邊距找到最近的塊元素來釘住(仍然是主體)。
要得到這些並排排隊邊,請執行下列操作:
<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>
這改變了第二次DIV的寬度。請參閱其他答案替代解決方案:http://stackoverflow.com/questions/356835/working-with-divs-css#356877 – 2008-12-10 18:14:30