Masonry 中没有对物品进行排序的选项,因为它是一个简单的插件,可以一一放置砖块。选择新砖的位置很简单:尽可能把它放在更高的位置。
但是在这种情况下可以做的是通过添加定义排序的两行来更改脚本,假设所有砖的宽度相同(例如,总是5行)。
为了证明这一点,我使用了 jQuery Masonry(被压缩),你可以在这个 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;
};