vue丨監(jiān)聽頁面滾動(dòng)位置

let vm = new Vue(
    data () {
        return {
            recordList: [], // 展示列表
            hasNextPage: true, // 是否有下一頁
            loadPageNo: 0, // 當(dāng)前加載頁碼
            pageSize: 5, // 一次加載條數(shù)
            pullUpSwitch: true, // 能否發(fā)起請求
            pullUpWord: ''
        }
    }
)

// 當(dāng)前距離頂部的滾動(dòng)值
function getScrollTop () {
    let scrollTop = 0
    if (document.documentElement && document.documentElement.scrollTop) {
        scrollTop = document.documentElement.scrollTop
    } else if (document.body) {
        scrollTop = document.body.scrollTop
    }
    return scrollTop
}
// 屏幕的高度值
function getClientHeight () {
    let clientHeight = 0
    if (document.body.clientHeight && document.documentElement.clientHeight) {
        clientHeight = Math.min(document.body.clientHeight, document.documentElement.clientHeight)
    } else {
        clientHeight = Math.max(document.body.clientHeight, document.documentElement.clientHeight)
    }
    return clientHeight
}
// 滾動(dòng)條的長度
function getScrollHeight () {
    return Math.max(document.body.scrollHeight, document.documentElement.scrollHeight)
}

// 監(jiān)聽滾動(dòng)條
window.addEventListener('scroll', () => {
    let scrollDiff = getScrollHeight() - getClientHeight() - getScrollTop()
    if (vm.pullUpSwitch && scrollDiff <= 50) {
        vm.pullUpSwitch = false
        vm.loadMore(vm.loadPageNo, vm.pageSize)
    }
})
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容