Vue實(shí)現(xiàn)上拉加載下一頁效果的示例代碼
之前從來沒有單獨(dú)的做過手機(jī)端的網(wǎng)頁。當(dāng)然,之前我也沒有獨(dú)立的從切圖到寫代碼交互做過前端的頁面。
這里邊的分頁還是和響應(yīng)電腦端的數(shù)字分頁。但是,其實(shí)獨(dú)立做一個(gè)手機(jī)端的網(wǎng)站,而不是響應(yīng)式的網(wǎng)站的時(shí)候,這種數(shù)字分頁看起來可能是不太好。
手機(jī)端網(wǎng)站嘛,還是仿照著APP或者是微信小程序那種上拉觸底分頁比較好。但是,這個(gè)玩意怎么實(shí)現(xiàn)呢?
第一種想法,監(jiān)聽滾動(dòng)條,滾動(dòng)條滾動(dòng)到頁面底部,觸發(fā)方法,請(qǐng)求接口加載下一頁的數(shù)據(jù)。嗯,應(yīng)該是可行的,我們來嘗試一下:
監(jiān)聽滾動(dòng)條所在位置的方法如下:
/**
* @name: 監(jiān)聽 滾動(dòng)條變化
* @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);
// 設(shè)備/屏幕高度
scrollObj = document.querySelector('.top-div'); // 滾動(dòng)區(qū)域
// var scrollTop_page = document.documentElement.scrollTop || document.body.scrollTop;
let scrollHeight = data.scrollHeight;
if (scrollObj != null)
{
scrollHeight = scrollObj.scrollHeight // 滾動(dòng)條的總高度
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 到頭部的距離 + 屏幕高度 = 可滾動(dòng)的總高度
// 滾動(dòng)條到底部的條件
getData();// 獲取下一頁數(shù)據(jù)
}//*/
}測(cè)試一下,效果如下圖所示:

看了上邊console出來滾動(dòng)條的值之后,效果體驗(yàn)及其不佳,不行啊,這玩意用不了啊。后來,我就琢磨,不能夠啊,怎么能不好用呢。問了下公司的前端,我倆研究了半天,也沒有找到太好的解決辦法。
這個(gè)時(shí)候,我靈機(jī)一動(dòng),上拉加載不好用,那就退而求其次,改成點(diǎn)擊加載下一頁唄。
這個(gè)就不存在難度了,一個(gè)點(diǎn)擊事件請(qǐng)求接口就好了,最后注意一下,返回值是疊加到數(shù)組里邊的。不要覆蓋。最終效果如下圖所示:

做完了之后,總覺得還是上拉加載分頁這個(gè)功能比較好,這個(gè)項(xiàng)目我是用了組件庫(vant)
我看了一下vant的使用文檔后發(fā)現(xiàn),vant有上拉加載這個(gè)組件,我真是……
組件詳情如下圖所示:

組件要是能滿足需求,還是用組件吧……
到此這篇關(guān)于Vue實(shí)現(xiàn)上拉加載下一頁效果的示例代碼的文章就介紹到這了,更多相關(guān)Vue上拉加載內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- vue前端頁面數(shù)據(jù)加載添加loading效果的實(shí)現(xiàn)
- vue實(shí)現(xiàn)滑動(dòng)到底部加載更多效果
- vue實(shí)現(xiàn)頁面加載動(dòng)畫效果
- Vue ElementUI this.$confirm async await封裝方式
- vue+el使用this.$confirm,不能阻斷代碼往下執(zhí)行的解決
- Vue+Element-ui彈窗?this.$alert?is?not?a?function問題
- Vue給?elementUI?中的?this.$confirm、this.$alert、?this.$prompt添加按鈕加載效果
相關(guān)文章
vue項(xiàng)目關(guān)閉eslint校驗(yàn)
eslint是一個(gè)JavaScript的校驗(yàn)插件,通常用來校驗(yàn)語法或代碼的書寫風(fēng)格。這篇文章主要介紹了vue項(xiàng)目關(guān)閉eslint校驗(yàn),需要的朋友可以參考下2018-03-03
element-ui中up-load組件實(shí)現(xiàn)圖片上傳回顯
在項(xiàng)目開發(fā)的時(shí)候很多人都會(huì)用到圖片上傳,本文主要介紹了element-ui中up-load組件實(shí)現(xiàn)圖片上傳回顯,具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01
vue?watch監(jiān)聽觸發(fā)優(yōu)化搜索框的性能防抖節(jié)流的比較
這篇文章主要為大家介紹了vue?watch監(jiān)聽觸發(fā)優(yōu)化搜索框的性能防抖節(jié)流的比較,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10
vant自定義引入iconfont圖標(biāo)及字體的方法步驟
因?yàn)関antUI給的圖標(biāo)非常少,為了滿足自己的需求,就應(yīng)該找到一種方法來向vant添加自己自定義的圖標(biāo),對(duì)于自定義圖標(biāo)我第一時(shí)間想到的就是阿里的iconfont矢量圖庫,這篇文章主要給大家介紹了關(guān)于vant自定義引入iconfont圖標(biāo)及字體的方法步驟,需要的朋友可以參考下2023-09-09
vue輸入節(jié)流,避免實(shí)時(shí)請(qǐng)求接口的實(shí)例代碼
今天小編就為大家分享一篇vue輸入節(jié)流,避免實(shí)時(shí)請(qǐng)求接口的實(shí)例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-10-10
vue?如何綁定disabled屬性讓其不能被點(diǎn)擊
這篇文章主要介紹了vue?如何綁定disabled屬性讓其不能被點(diǎn)擊,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04

