Vue实现某个元素监听滚动条失效问题(scrollTop一直等于0 )

这篇博客探讨了在JavaScript中使用addEventListener监听滚动事件时,为何需要将第三个参数设置为true才能生效。作者通过比较将事件绑定在window和元素上的不同,指出在元素上直接监听滚动可能无法正确获取滚动位置。为了解决这个问题,提出了利用window监听并获取指定元素的scrollTop值的方法,实现了根据滚动位置控制按钮显示和隐藏的功能。
摘要由CSDN通过智能技术生成

绑定在window上 addEventListener 事件需要 第三个参数设置为true,不然事件不起作用

 mounted() {
    window.addEventListener('scroll',this.handleScroll,true)
  }
 methods: {
  handleScroll(){
      let scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
      console.log(scrollTop);
    }
}

绑定到元素上

mounted() {
    document.querySelector("#wrap").addEventListener('scroll',this.handleScroll)
 }
methods: {
  handleScroll(){
      let scrollTop = document.querySelector("#wrap").scrollTop;
      console.log(scrollTop);
    }
}

可是我试了之后发现window上可以监测到滚动条,但绑定到元素上不行,我突发奇想,是否可以先用window监测,在方法里获取元素的scrollTop,

mounted () {
    window.addEventListener('scroll', this.handleScroll, true)
},
methods: {
    //实现返回顶部的效果  控制按钮的显示和隐藏
    handleScroll () {
      let scrollTop = document.getElementById('homemain').scrollTop;
      let clientHeight = document.getElementById('homemain').clientHeight;
      let scrollHeight = document.getElementById('homemain').scrollHeight;
      //滚动条到底部的条件即为scrollTop + clientHeight == scrollHeight。
      if ((scrollTop + clientHeight) > (scrollHeight / 2)) {
        this.isUp = true
      } else {
        this.isUp = false
      }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值