使用CSS的动态浮动布局

jam*_*lin 8 html javascript css css3 css-float

让我试着解释一下我想要实现的目标.我希望X盒具有特定宽度(250像素)的设置,但动态高度可放置在体内.但我希望它们尽可能紧凑,它们之间没有不必要的空白空间.

现在如果所有盒子都有相同的宽度和高度,这将很容易.我可以举个例子float:left;.但是当盒子高度是动态的,并且所有盒子都有随机高度时,我最终会在盒子之间留出空格.

让我举两个例子:

这就是我要的:

这就是我要的

这就是我最终的结果:

这就是我最终的结果

这是我的CSS:

<style type="text/css">
<!--
body {
    background:#CCCCCC;
}
.flowBox {
    background:#FFFFFF;
    margin:10px;
    float:left;
    padding:10px;
    width:250px;
    border:#999999 1px solid;
}
.clear {
    clear:both;
}
-->
</style>
Run Code Online (Sandbox Code Playgroud)

框的HTML示例:

<div class="flowBox">
   <h1>Header 0</h1>
   Erat volutpat. Sed rutr...
</div>
Run Code Online (Sandbox Code Playgroud)

完整源代码: http : //pastebin.com/UL1Nqyvm

有没有办法用CSS实现这一目标?感谢您的帮助或指示!

Pet*_*ter 6

从我以前看过的情况来看,如果不是不可能只使用CSS,那么你想要实现的目标几乎是不可能的.您想要的基本上是一个类似于Pinterest的布局,如果您不确定我在说什么,您可以查看他们的网站以供参考.

从这里开始,您可以更多地研究Pinterest布局是如何完成的,以及是否有任何替代方案 - CSS框架,jQuery插件等等.

考虑到上述因素,我通过简短的搜索找到了你:

此外,以下是Evan Sharp撰写Pinterest布局代码简短说明:

我写了Pinterest脚本.以下是它的工作原理:

事先:绝对定位销容器确定列宽确定列之间的边距(排水沟)

设置数组:获取父容器的宽度; 计算适合的列数#创建一个空数组,其长度等于列数.在构建布局时使用此数组存储每列的高度,例如,列1的高度存储为数组[0]

遍历每个引脚:在添加"left:"时将每个引脚放在最短列中===列#(索引数组)乘以列宽+边距"top:"===数组中的值(高度)当时最短列最后,将引脚的高度添加到列高(数组值)

结果很轻.在Chrome中,布局一整页50多个引脚需要<10ms>

您可以通过我提供的略微指导进一步研究该主题,或者如果您正在编写代码,您甚至可以自己实现上述解释.

虽然使用jQuery插件会容易得多,但如果它们适合你的情况,那只能由你来决定.