vue.js判断滚动条滚动到底部后(防抖节流)进行数据的分页请求

vue.js判断滚动条滚动到底部后(防抖节流)进行数据的分页请求

整体思路

VUE2.0其实有很多的插件来,而且功能很强大,还提供很多的插槽来,之前跟着师父做的项目里直接用了vue-infinite-loading,功能也很强大,点击这里可以直接看我之前写的博客。
vue-infinite-loading: 链接.
今天主要介绍一下原生的JS怎么去做判断
主要用3个属性,scrollTop,scrollHeight,clientHeight
scrollTop:鼠标滚动Y轴的距离
scrollHeight:滚轮的整体高度
clientHeight:浏览器的可视高度
so:判断滚动到底部的判断就是
if(scrollTop+clientHeight==scrollHeight)

监听代码

  mounted() {
    window.addEventListener('scroll',this.handleScroll)
  },
  methods: {
  	handleScroll(){
      let scrollTop=document.documentElement.scrollTop//滚动条在Y轴滚动过的高度
      let scrollHeight=document.documentElement.scrollHeight//滚动条的高度
      let clientHeight=document.documentElement.clientHeight//浏览器的可视高度
      //so 判断滚动条到底部的判断条件就是
      //scrollTop+clientHeight==scrollHeight
      // console.log('滚动高度',document.documentElement.scrollHeight)
      // console.log('浏览器的可视高度',document.documentElement.clientHeight)
      // console.log('距离顶部的高度u',scrollTop)
      if(scrollTop+clientHeight==scrollHeight){
        console.log('滚动到底部了')
      }
    }
  }

在这里插入图片描述
在这里插入图片描述
其实这样的话会发现对我们浏览器的性能消耗是很大的,so我们要对它进行优化,优化的2个方式就是防抖和节流。

防抖节流

防抖就是规定时间内执行最后一次,节流就是规定时间内执行第一次

    //防抖
    debounce(fn, delay) {
      let timer = null; //借助闭包
      return function () {
        if (timer) {
          clearTimeout(timer);
        }
        timer = setTimeout(fn, delay); // 简化写法
      };
    },
  mounted() {
    window.addEventListener("scroll", this.debounce(this.handleScroll, 500));
  },

这样的话就是0.5秒内触发一次。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值