砌体中没有选项来对项目进行排序,因为它是一个简单的插件,可以逐个放置砖块。选择新的砖块位置很简单:尽可能将砖块放置得更高。
但是在这种情况下可以做的是通过添加两行定义排序来改变脚本,假设所有砖的宽度相同(例如,总是5行)。
为了演示这个,我使用了jQuery Masonry(被压缩),你可以在this Fiddle中看到它。
JS
$.Mason.prototype._placeBrick = function(e) {
var n = $(e),
r, i, s, o, u;
r = Math.ceil(n.outerWidth(!0)/this.columnWidth), r = Math.min(r, this.cols);
if (r === 1) s = this.colYs;
else {
i = this.cols + 1 - r, s = [];
for (u = 0; u < i; u++) o = this.colYs.slice(u, u + r), s[u] = Math.max.apply(Math, o)
}
var a = Math.min.apply(Math, s),
f = 0;
for (var l = 0, c = s.length; l < c; l++)
if (s[l] === a) {
f = l;
break
}
/* Add new calculation, what column next brick is in: */
f = $(e).index() % this.cols; /* Get col index f: Just divide with element's index */
a = s[f]; /* This is current height for f-th column */
/* END of customizing */
var h = {
top: a + this.offset.y
};
h[this.horizontalDirection] = this.columnWidth * f + this.offset.x, this.styleQueue.push({
$el: n,
style: h
});
var p = a + n.outerHeight(!0),
d = this.cols + 1 - c;
for (l = 0; l < d; l++) this.colYs[f + l] = p;
};
你就会有问题是1个大的电池可为2个较小的细胞(或更多)一样高。在这种情况下,一个单元格将跨越2行或更多行,我可能会非常困惑。例如,如果你拿第二张插图并将其减少到3列,那么你将堆放高度为3,6和9的盒子。如果你有更多的盒子,你最终会在6点之前拿到盒子7,并且你会继续移动。除非你改变垂直边界来重新对齐盒子,否则我不会看到它是如何完成的。 – Tchoupi