2013-04-22 81 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