2011-03-05 46 views
13

有谁知道如何从下往上制作jQuery砌体堆栈?我写了一些基本的JS来从下往上堆叠东西,但是它不能做砖石砌体,比如在最短的柱子上堆砌下一块砖块,并且跨越多列。由于我对数学不太好,查看源代码只会让我头晕目眩。jQuery砌体自下而上

Stacking from bottom up

任何人想试试吗?

+4

如果你提出挑战,你将不得不使标准更清晰,以确保你获得参赛者。看起来有点儿可以向我解释......块子从哪里来,它们可以是什么尺寸和形状,是平顶的理想目标?尽管我喜欢这个图,并且+1是一个很酷的问题。 – Orbit 2011-03-05 19:54:56

+0

+1不错的问题。其次是更多细节的要求。 – polarblau 2011-03-05 20:30:00

回答

19

你会嘲笑这是多么容易,但你需要修改插件(demo)。

基本上,我改线82 - 85从这里(所有需要的改变是topbottom,但我加了两个,所以你可以来回切换):

var position = { 
     left: props.colW * shortCol + props.posLeft, 
     top: minimumY 
    }; 

这样:

var position = (opts.fromBottom) ? { 
     left: props.colW * shortCol + props.posLeft, 
     bottom: minimumY 
    } : { 
     left: props.colW * shortCol + props.posLeft, 
     top: minimumY 
    }; 

然后添加在默认的选项:

// Default plugin options 
    $.fn.masonry.defaults = { 
    singleMode: false, 
    columnWidth: undefined, 
    itemSelector: undefined, 
    appendedContent: undefined, 
    fromBottom: false, // new option 
    saveOptions: true, 
    resizeable: true, 
    animate: false, 
    animationOptions: {} 
    }; 

现在你ç一个只使用插件像这样:

$('#masonry').masonry({ fromBottom: true }); 

更新:我在GitHub上也forked the repository,这样你就可以下载了变化,如果你不想做他们自己。

+0

超级棒!谢谢fudgey! 在另一个说明中,我添加了另一个父元素,这样我可以将整个堆栈放置在该父元素的底部以模拟重力。 ([演示](http://aentan.com/test.html)) – 2011-03-06 01:57:50