在一些網(wǎng)頁應(yīng)用中,有時會碰到一個超級巨大的列表,成千上萬行,這時大部份瀏覽器解析起來就非常痛苦了(有可能直接卡死)。

也許你們會說可以分頁或動態(tài)加載???但是有可能需求不允許分頁,動態(tài)加載?網(wǎng)絡(luò)的延遲也會造成體驗不好。

那么適時候介紹本文的實現(xiàn)思路了。

首先上最終的效果:

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動開發(fā)培訓(xùn)

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動開發(fā)培訓(xùn)

 

主要思路如下:

首先,創(chuàng)建如上圖所示的三個DIV,scrollbar用于顯示具體的滾動條(CSS需要設(shè)置zindex,要顯示在demo-list的底層),real-panel用于計算列表的實際高度(每一個li的高度是固定的,有多少項數(shù)據(jù)也是知道的,由此可以計算出列表的實際高度),demo-list主要用于當(dāng)前滾動條高度對應(yīng)的實際數(shù)據(jù)(css需要設(shè)置zindex,顯示于scrollbar的上層,需要使用JS計算寬度等于real-panel的寬度,這樣就剛好覆蓋掉底層滾動條外的區(qū)域)。

然后,使用KO對數(shù)據(jù)實現(xiàn)綁定,由于KO的雙向綁定,我們可以不用再去實現(xiàn)滾動滾動條時數(shù)據(jù)變化時帶來的更新操作。

最后,就是兼容性了。本文的具體實現(xiàn)在IE6\7\8\9\10\11,FireFox,Chrome,Edge上效果完美。

 

下面貼代碼:flyweight.js

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負責(zé)任的教育,學(xué)習(xí)改變命運,軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式