如何复制pinterest.com的绝对div堆叠布局

我正在寻找复制Pinterest.com的div布局,具体如何调整列的数量以适应浏览器resize和垂直堆叠不依赖于相邻列高度。 源代码显示每个div是绝对位置的。 一个联合创始人已经回答了一个Quora的post,声明它是用自定义的jQuery和CSS完成的。 我想结果从左到右sorting。 任何你可以提供自己的方向将不胜感激。

你也可以检查jQuery Plug-in Masonry的这种function。

我写了Pinterest脚本。 ID与布局无关,用于其他与交互相关的JS。 这是它如何工作的基础:

预先:

  • 绝对放置针容器
  • 确定列宽
  • 确定列之间的边距(阴沟)

安装一个数组:

  • 获取父容器的宽度; 计算适合的列数
  • 创build一个空数组,长度等于列数。 使用此数组来存储构build布局时每个列的高度,例如列1的高度存储为数组[0]

循环通过每个引脚:

  • 将每个引脚添加到最短的列中
  • “left:”===列#(索引数组)乘以列宽+ margin
  • “top:”===当前最短列的数组(高度)值
  • 最后,将该针的高度添加到列高度(数组值)

结果是轻量级的。 在Chrome中,布满整个页面的50多个引脚需要<10ms。

我们发布了一个jQuery插件,因为我们几次得到了相同的问题。 它创build这种types的布局。 在这里查看 – Wookmark jQuery插件

看了所有的选项后,我用这种方式实现了与Pinterest类似的布局:

所有DIV是:

div.tile { display: inline-block; vertical-align: top; } 

这使得它们在行中的位置比在浮动时更好。

然后,当页面加载时,我遍历JavaScript中的所有DIV,以消除它们之间的差距。 在以下情况下,它的工作可以接受:

  1. DIV在身高方面差别不大。
  2. 你不介意一些轻微的违规行为(一些以下的元素可以被拉高)。
  3. 你不介意底线是不同的高度。

这种方法的好处 – 您的HTML对search引擎有意义,可以在防火墙禁用/阻止JavaScript的情况下工作,HTML中的元素顺序与逻辑顺序相匹配(较旧的较早的项目)

他们用id(不好的解决scheme…更好地使用类名称)的列分割实体,然后按列组计算位置

为什么不试试这个,简单的js的东西

http://vanilla-masonry.desandro.com/index.html

或甚至这与jQuery和滚动加载以及。

http://masonry.desandro.com/index.html

你可以使用浮动和大小你的div宽度使用百分比与最小宽度迫使div一旦最小宽度达到自动下降? 它的方式,我们得到它的工作http://www.goldtree.co.za/work