vue监听滚动开始与结束

这篇博客探讨了JavaScript中如何监听和处理页面滚动事件。通过设置`scrollTop`和`oldScrollTop`属性,我们可以捕捉滚动开始和结束的瞬间。在滚动结束时,利用延时器确保滚动状态稳定,并更新`tran_flag`标志。同时,当滚动开始时,如果`oldScrollTop`和`oldValue`相等,标记滚动开始。这个方法对于实现基于滚动的动态效果或优化性能很有帮助。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

data{
oldScrollTop: 0, //记录上一次滚动结束后的滚动距离
scrollTop: 0 ,// 记录当前的滚动距离
}
watch: {
			scrollTop(newValue, oldValue) {
				setTimeout(() => {
					if(newValue == window.scrollY) { //延时执行后当newValue等于window.scrollY,代表滚动结束
						console.log('滚动结束');
						this.oldScrollTop = newValue; //每次滚动结束后都要给oldScrollTop赋值
						this.tran_flag=true;
					};
				}, 200); //必须使用延时器,否则每次newValue和window.scrollY都相等,无法判断,20ms刚好大于watch的侦听周期,故延时20ms
				if(this.oldScrollTop == oldValue) { //每次滚动开始时oldScrollTop与oldValue相等
					console.log('滚动开始');
					this.tran_flag=false;
				}
			}
		},
methods: {
			handleScroll() {
				window.addEventListener('scroll', () => {
					this.scrollTop = window.scrollY;
				})
			},
		}
beforeDestroy() {
			window.removeEventListener('scroll',() => {
					this.scrollTop = window.scrollY;
				}); //离开当前组件别忘记移除事件监听哦
		}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值