针对元素内滚动的监控及延申 VUE

针对元素内滚动的监控及延申 VUE

写在前面:以往仅仅使用window.addEventListener(‘scroll’, function(){})就可以监控的滚动事件,面对元素内滚动则失效,故采用了比较极端的方式,如有更优解,欢迎交流

情景描述:监控元素内滚动,若超出一定范围,则显示回到顶部按钮,点击此按钮,元素回滚到自己的顶部。因按钮为多页面使用,所以我将按钮写为了子组件。情景如图

在这里插入图片描述

第一步 父组件监控滚动事件

因父组件非最外层盒子,故监控scroll事件不成立,所以使用了mousewheel(鼠标滚动)事件,通过监控鼠标滚动事件,判断父组件距离屏幕顶部的距离,超出一定范围,向子组件传参使其显示
代码如图
父组件:
在这里插入图片描述
监控滚动发生事件:
在这里插入图片描述
子组件在父组件的写法
在这里插入图片描述

第二步 子组件接收参数,并在点击事件后向父组件传参,使其回滚

代码如图
在这里插入图片描述
在这里插入图片描述
点击事件
在这里插入图片描述

第三步 父组件接收参数,回滚

代码如图
在这里插入图片描述
完成

错误记录

编写过程中,尝试使用ref属性监控滚动或鼠标滚动:

 this.$refs.index_main.addEventListener('scroll', this.scrollToTop)
 this.$refs.index_main.addEventListener('mousewheel', this.scrollToTop)

均失败,原因是ref并不是动态的,无法实时获取事件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值