2013-04-22 114 views
1

我正在嘗試製作具有變量高度的項目列表。當我嘗試使用水平行對齊的項目製作一個整齊的列表時,當列表項全都具有相同的高度時,一切順利。當一個或多個物品有更高的高度時會出錯。我創建了一個JSFiddle來非常清楚地顯示問題。誰能幫我嗎?列表項不要垂直對齊

http://jsfiddle.net/NNLDn/

我的html:

<div> 
    <ol> 
     <li></li> 
     <li></li> 
     <li style="height: 140px;"></li> 
     <li></li> 
     <li></li> 
     <li></li> 
    </ol> 
</div> 

我的CSS:

div { 
    width: 730px; 
} 

ol { 
    width 730px; 
    margin-left: -40px; 
} 

ol li { 
    display: block; 
    width: 167px; 
    height: 120px; 
    margin: 0 0 15px 15px; 

    background:red; 
    float: left; 
} 
+0

你想每行的有效高度由最高確定行中的元素? – kroehre 2013-04-22 18:21:20

+0

li的包裝到下一行是故意的? – Ejaz 2013-04-22 18:21:50

+1

是的!每行應該是最高元素的高度。 – 2013-04-22 18:22:06

回答

4

您應該考慮使用display:inline-block代替float:left,那麼你也可以玩與vertical-align元素的垂直對齊。

+3

包含在答案中的示例代碼以及演示在這裏有很長的路要走。這是一個免費的演示,因爲你擊敗了我:http://jsfiddle.net/NNLDn/2/ – cimmanon 2013-04-22 18:25:37

+0

是的,這看起來像是最好的解決方案。頂部垂直對齊示例:http://jsfiddle.net/zjhqP/ – kroehre 2013-04-22 18:27:26

1

唯一的CSS解決方案,我知道,如果你知道的li項目每行的數量,是包圍在div中的每一行,然後浮動這些div。這樣,自動與每格調整到最高立的高度,而且沒有浮動li旨意獲得的「掛斷」

div div { float: left; clear: both; }

http://jsfiddle.net/NNLDn/1/

+1

這就是我要去的地方 – kroehre 2013-04-22 18:24:33

0

我無法仔細檢查容易了,因爲我在我的電話,但我認爲你需要使用display:inline-block,而不是使用float