我创造了一个像pinterest一样的网格
并且一切正常,除了获取代码中项目的高度太慢
在我的代码中,我必须得到最后添加元素的高度并将其添加到行的高度,因此对于下一个项目,我可以将顶部位置设置为高度。
这是代码:
testOne: function(itemArray, parent){
// layout
var layout = [];
for(i in itemArray_){
var item = itemArray[i];
var template = this.template(item);
// get smallest height
var smallestHeight = layout[0];
var smallestHeightRow = 0;
for(i in layout){if(layout[i] < smallestHeight){smallestHeight = layout[i]; smallestHeightRow = i;}}
// add item to screen
parent.append(template);
// add height of last item
var item = parent.find("[item-id="+item._id+"]");
item.css("top", smallestHeight+15+"px");
item.css("left", smallestHeightRow*25+"%");
var itemHeight = item[0].offsetHeight;
layout[smallestHeightRow] = smallestHeight+itemHeight;
}
},
但问题是,除了获得元素的高度外,这个过程很快 所以没有达到高度,功能大约需要20ms左右 但是获得高度又增加了75毫秒,并使其大约95毫秒 现在我的问题是,我怎样才能更快地确定高度?
答案 0 :(得分:1)
添加第一轮瓷砖后,您可以存储不同行的高度。这样,下次添加新瓷砖时,您可以使用它,而无需计算它还是等待它。