記錄滾動位置

2021-08-28 06:15:25 字數 951 閱讀 9960

h5頁面記錄滾動位置的步驟思想

第二種情況:頁面分頁時候,記錄滾動位置

這種情況很坑,以下是處理這樣的情況的步驟(舉例:電商商品首頁記錄位置)

總要思想步驟:

1.先記錄滾動位置和當前商品資料到快取。

ps:因為跳轉時候如果不先渲染出你的頁面,這時候你滾動位置如果大於你的某個值,會跳到當前最大位置,就是沒有進行分頁的最大位置。

2.分頁演算法裡面記錄你的當前頁和總頁數,當頁面重新整理好後,當前頁和總頁數進行判斷,是否該分頁,以防已經到底還能下拉分頁

3.頁面重新整理後,先根據你的快取資料渲染頁面,然後再進行跳轉,這樣滾動跳轉位置就是正確的,頁面頁面高度已經發生了變化

4.快取渲染完頁面後,你需要再次獲取和快取資料一樣的最新的資料,然後再次渲染頁面,最後重置快取為最新的資料,以防資料變化後,頁面還是一直未快取的頁面

需要注意的地方:

1.取消預設瀏覽器記錄位置的自動滾動

history.scrollrestoration = 'manual';

2.封裝你的分頁演算法,並且在演算法裡面記錄當前頁,頁碼總數

3.監聽滾動時候,記錄你的滾動位置

4.監聽滾動時候,判斷當前頁面是否大於頁碼總數,這裡需要處理好你所存的分頁總數和當前頁,需要做處理,否則你的分頁和總頁數重新整理時候,會出錯,這裡需根據你的需求,自己做容錯,**部分舉例

var pageno = localstorage.pageno?parseint(localstorage.pageno):pageno;

if(isnan(localstorage.pagetotal))

}else

if (pageno > pagetotal) else

}5.分頁裡面需要判斷當前頁碼是否大於總頁碼,大於的話,讓當前頁碼等於總頁碼,以防重新整理後,可以一直滾動,舉例**

if(pageno>pagetotal)

6.記錄完滾動後記得,重新整理快取

記錄瀏覽器滾動條位置

1,使用瞄定位,href guo 指向name或者id為guo的元素,使用name定位只對a標籤有用 2,用原生js方法,name.id.class document.getelementbyid guo scrollintoview document.getelementsbyname guo 0...

vue移動端專案記錄滾動位置方案總結

最近在用vue做移動端專案,列表展示頁面有很多條資料,在滑動到下面的時候,點到對應詳情頁,此時後退,應該在之前滾動的位置,不能滾動到頂部,這就需要記錄滾動位置。這是需求,說完了需求,就考慮怎麼實現吧!在路由檔案router.js中設定快取,方式如下 複製 這樣的話,後退的時候就不會重新整理頁面,完成...

滾動條位置判斷

獲取滾動條距離頂部位置 function getscrolltop else if document.body return scrolltop 獲取當前可視範圍的高度 function getclientheight else return clientheight 獲取文件完整的高度 funct...