vue之監(jiān)聽頁面是否以到底部
vue監(jiān)聽頁面是否以到底部
項目中經(jīng)常用到上拉加載數(shù)據(jù)列表,平時使用組件庫可以快速的實現(xiàn),整理一下原生寫法
思路
距離頂部的距離+ 可視區(qū)域高度 == 滾動條高度 如果成立說明已經(jīng)到頁面底部
獲取距離頂部的距離:
var scrollTop = document.documentElement.scrollTop||document.body.scrollTop;
獲取可視區(qū)域高度:
var windowHeight = document.documentElement.clientHeight || document.body.clientHeight;
獲取滾動條高度:
var scrollHeight = document.documentElement.scrollHeight||document.body.scrollHeight;
注意:在vue的created鉤子中使用
window.onscroll = function(){…}:觸發(fā)監(jiān)聽的函數(shù)
created(){ window.onscroll = function(){ var scrollTop = document.documentElement.scrollTop||document.body.scrollTop; var windowHeight = document.documentElement.clientHeight || document.body.clientHeight; var scrollHeight = document.documentElement.scrollHeight||document.body.scrollHeight; if(scrollTop+windowHeight==scrollHeight){ //寫后臺加載數(shù)據(jù)的函數(shù) console.log("距頂部"+scrollTop+"可視區(qū)高度"+windowHeight+"滾動條總高度"+scrollHeight); } } }
scroll滾動事件如何監(jiān)聽頁面是否滾動到底部
監(jiān)聽是否滾動到底部多數(shù)應(yīng)用在加載更多之類的功能。話不多說,直接上菜。
考慮vue渲染規(guī)則 需要在元素渲染后執(zhí)行scroll監(jiān)聽 否則獲取不到對應(yīng)dom節(jié)點
所以需要配合使用 $nextTick()
cont是監(jiān)聽區(qū)域,‘scroll’是添加事件,this.scroll是方法,div綁定ref="cont"。
mounted() { this.$nextTick(()=>{ this.$refs.cont.addEventListener('scroll',this.scroll) }) }
scroll判斷是否到底部,如果到底了就可以請求數(shù)據(jù)或者其它操作。
scroll(e) { let scrollTop = e.target.scrollTop; //滑入屏幕滾動條滾動時,距離頂部的距離 let windowHeitht = e.target.clientHeight; //能看到的頁面的高度 let scrollHeight = e.target.scrollHeight; //監(jiān)控的整個div的高度(包括現(xiàn)在看到的和上下隱藏起來看不到的) let total = scrollTop + windowHeitht if(total == scrollHeight){ console.log("到底了") //加載操作 }else { console.log("還沒有到底") } }
如果沒有要加載數(shù)據(jù)了,就可以把scroll事件移除了,以免浪費性能。
this.$refs.cont.removeEventListener('scroll',this.scroll)
注意:
一定給滾動的區(qū)域加高度和超出部分為滾動,不然不會觸發(fā)事件。
滾動區(qū)域class= "cont"。
.cont { overflow: scroll; width: 100%; height: 677px; }
這就是事件監(jiān)聽是否滾動到底部的全部內(nèi)容了,其實并不難。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解如何實現(xiàn)在Vue中導(dǎo)入Excel文件
這篇文章主要介紹了如何在Vue中導(dǎo)入Excel文件,文中的示例代碼講解詳細,對我們學(xué)習(xí)或工作有一定幫助,感興趣的小伙伴可以跟隨小編一起了解一下2022-01-01Vue3通過JSON渲染ElementPlus表單的流程步驟
這篇文章主要介紹了Vue3通過JSON渲染ElementPlus表單的流程步驟,文中通過代碼示例和圖文給大家講解的非常詳細,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-10-10cordova+vue+webapp使用html5獲取地理位置的方法
這篇文章主要介紹了2019-07-07