一個頁面要展示200條數據,每條數據都是一個ckeditor富文本編輯器,並且每條記錄的高度不一致,頁面非常卡。
優化方式是使用虛擬列表的邏輯,頁面始終展示10條數據。
當頁面滾動到底部時,底部增加2條數據,頂部減少2條。滾動到頂部則相反操作。
這樣可以保證永遠都是10條,但是因爲高度不一致,所以數據條目變更時,頁面會向上多滾動一些,或向下多滾動一些,不會定位到尾部。
解決方式是當是數據變更後,控制滾動條滾動到指定的位置。
具體代碼邏輯:
1.外圍有個div,固定高度,使滾動條出現
2.監聽頁面滾動到底部,底部加載2條,頂部減去2條
因爲vue框架使用element,所以判斷是否滾動到底部使用了 InfiniteScroll 無限滾動
3.監聽滾動到頂部,在外圍div上添加 @scroll 方式,判斷距離頂部高度
4.控制滾動條移動到指定位置