砌體中沒有選項來對項目進行排序,因爲它是一個簡單的插件,可以逐個放置磚塊。選擇新的磚塊位置很簡單:儘可能將磚塊放置得更高。
但是在這種情況下可以做的是通過添加兩行定義排序來改變腳本,假設所有磚的寬度相同(例如,總是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