javascript - 像网格一样的pinterest娱乐

时间:2015-06-28 06:22:41

标签: javascript css performance

我创造了一个像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毫秒 现在我的问题是,我怎样才能更快地确定高度?

1 个答案:

答案 0 :(得分:1)

添加第一轮瓷砖后,您可以存储不同行的高度。这样,下次添加新瓷砖时,您可以使用它,而无需计算它还是等待它。