首頁 > 軟體

Vue實現上拉載入下一頁效果的範例程式碼

2022-08-31 14:00:57

之前從來沒有單獨的做過手機端的網頁。當然,之前我也沒有獨立的從切圖到寫程式碼互動做過前端的頁面。

這裡邊的分頁還是和響應電腦端的數位分頁。但是,其實獨立做一個手機端的網站,而不是響應式的網站的時候,這種數位分頁看起來可能是不太好。

手機端網站嘛,還是仿照著APP或者是微信小程式那種上拉觸底分頁比較好。但是,這個玩意怎麼實現呢?

第一種想法,監聽卷軸,卷軸捲動到頁面底部,觸發方法,請求介面載入下一頁的資料。嗯,應該是可行的,我們來嘗試一下:

監聽卷軸所在位置的方法如下:

       /**
         * @name: 監聽 卷軸變化
         * @author: camellia
         * @date: 2021-10-10
         */
        const handleScroll = (env:any) => {
            // =========================================================================
            // 回到頂部
            let scrollTop = document.getElementsByClassName('top-div')[0].scrollTop;
            if(scrollTop > 100)
            {
                data.flag_scroll = true
            }
            else
            {
                data.flag_scroll = false
            }
            // ===============================================
            // 上拉載入下一頁程式碼
            let clientHeight = document.getElementsByClassName('top-div')[0].clientHeight;
            let scrollObj = <Element | null>(null);
            // 裝置/螢幕高度
            scrollObj = document.querySelector('.top-div'); // 捲動區域
            // var scrollTop_page = document.documentElement.scrollTop || document.body.scrollTop;
            let scrollHeight = data.scrollHeight;
            if (scrollObj != null)
            {
                scrollHeight = scrollObj.scrollHeight // 卷軸的總高度
                data.scrollHeight = scrollHeight;
            }
            console.log("scrollObj:" + scrollObj);
            console.log("scrollHeight:" + scrollHeight);
            console.log("scrollTop:"+scrollTop );
            console.log("clientHeight:"+ clientHeight);
            console.log("total:"+ (scrollTop + clientHeight));
            if ( scrollTop + clientHeight === scrollHeight)
            {
                data.scrollTop = scrollTop;
                // div 到頭部的距離 + 螢幕高度 = 可捲動的總高度
                // 卷軸到底部的條件
                getData();// 獲取下一頁資料
            }//*/
        }

測試一下,效果如下圖所示:

看了上邊console出來卷軸的值之後,效果體驗及其不佳,不行啊,這玩意用不了啊。後來,我就琢磨,不能夠啊,怎麼能不好用呢。問了下公司的前端,我倆研究了半天,也沒有找到太好的解決辦法。

這個時候,我靈機一動,上拉載入不好用,那就退而求其次,改成點選載入下一頁唄。

這個就不存在難度了,一個點選事件請求介面就好了,最後注意一下,返回值是疊加到陣列裡邊的。不要覆蓋。最終效果如下圖所示:

做完了之後,總覺得還是上拉載入分頁這個功能比較好,這個專案我是用了元件庫(vant)

我看了一下vant的使用檔案後發現,vant有上拉載入這個元件,我真是……

元件詳情如下圖所示:

元件要是能滿足需求,還是用元件吧……

到此這篇關於Vue實現上拉載入下一頁效果的範例程式碼的文章就介紹到這了,更多相關Vue上拉載入內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com