棘手的css / javascript浮动任务

我的设计有几个不同宽度/高度的div,我需要它们基本上漂浮到左上角。 一个简单的css float:left将无法工作,因为它一旦下降到新行就不会利用垂直空间。

我假设我需要使用jQuery来动态定位每个div,但我希望有人可以引导我朝着正确的方向前进。

这就是标准浮标的作用: 标准浮点数http://sofzh.miximages.com/javascript/diagram_float_left.gif

这就是我需要做的事情: 我需要什么http://sofzh.miximages.com/javascript/diagram.gif

div的大小将随着网站内容的更新而改变,因此手动输入位置不是一种选择。

你有没有尝试过砌体插件 ?

给定一组现有元素和一个边界框(容器宽度和高度),您需要有一个算法来确定放置下一个元素的位置。 我先从简单的英语开始,然后先用笔和纸写下来 – 它比代码更容易。

一旦你有了,你将使用jQuery widthheight函数来获取元素的大小到位置,我相信你会想要css函数来设置top / left 。 元素的position应该是"absolute"并且包含元素的position应该是"relative" 。 查看所有jQuery API方法。

假设你已经编写了你的​​布局算法作为函数calculateOffset(element, container)返回一个偏移文字(例如{left: x, top: y} )并且你有一个jQuery元素列表elements和一个jQuery包装的container ,你可以做这样的事情来定位一切:

 elements.each(function() { $(this).css(calculateOffset($(this), container)); }); 

当然,困难的部分是编写calculateOffset 。 为此我建议从简单的东西开始,比如找到最高的(最低的top )放置元素的地方,偏向左侧(最left ),然后从那里开始。

我不认为我曾经听说过或看到过以这种方式显示事物的布局引擎。 最有可能的是,你只需要自己编写。

您需要创建一个API(至少以您对事物的想法)。 最有可能的是,你最终会得到一个Block(每个div都要布局)和一个Container(持有div的区域)。 将适当的方法,属性和事件应用于每个方法,属性和事件 ,您可能会很快到达那里。