css浮动元素,网格中左右不等的高度

时间:2012-07-11 14:21:51

标签: javascript jquery css layout

我想知道如何在图1中完成效果。

Float left up

到目前为止我得到的是

.box { display: inline-block; vertical-align: top; width: 100px;}

这给了我图2所示的结果。 (注意:我知道我可以用浮点数完成相同的操作:左)

我的HTML代码如下所示:

<span class="box">A<br><br><br><br></span>
<span class="box">B<br></span>
<span class="box">C<br><br><br></span>
<span class="box">D<br><br><br></span>
<span class="box">E<br><br><br><br><br><br></span>
<span class="box">F</span>
<span class="box">G<br><br><br><br></span>
<span class="box">H<br></span>
<span class="box">I<br><br></span>

我希望每个元素尽可能向左浮动,但同时向上浮动。

是否可以使用纯css执行此操作,还是需要一些javascript?

修改

对我来说,整个网格位于页面中心非常重要。这就是我使用display:inline-block的原因。网格也不应该固定在页面上,因为我希望它在我调整窗口大小时重排。

3 个答案:

答案 0 :(得分:20)

您可以使用热门图书馆Masonry

  

jQuery的动态布局插件CSS的反面浮动

以下是代码example ...

$('#container').masonry({
  itemSelector: '.box'
});

以下是Github上的来源以及Shoptalk播客上对David Desandro的采访。

对于不使用jQuery的人,请注意还有Vanilla Masonry这是无框架版本。

提示:确保父容器具有position:relative,因此所有内容都绑定到容器。

答案 1 :(得分:5)

由于您已经在使用jquery,jquery砌体可能会让您感兴趣:http://masonry.desandro.com

答案 2 :(得分:3)

好吧,如果您的目标只是支持最新的浏览器,那么CSS3 multi-column layout可能有所帮助。这种方法的一个问题是它不会保持相同的顺序,但你可以使用HTML(或Javascript)中的顺序。

我在您的跨度周围添加了一个名为#container的容器。

#container { 
    -webkit-column-width: 100px; 
    -moz-column-width: 100px; 
    column-width: 100px; 
}

jsFiddle Demo