[vue] 监听滑动: 监听整个窗口(window)的滑动, 监听元素的滑动

这篇博客介绍了如何在JavaScript中监听窗口和特定元素的滚动事件。通过`window.addEventListener('scroll')`可以监听整个窗口的滚动,而`document.querySelector('#id').addEventListener('scroll')`则用于监听指定ID元素的滚动。在`handleScroll`方法中,获取并打印了滚动的垂直位置(scrollTop),这对于实现页面动态效果或滚动定位很有用。

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

1、监听整个窗口(window)的滑动

mounted() {
   window.addEventListener('scroll',this.handleScroll,true)
}

 methods: {
  handleScroll(){
      let scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
      console.log(scrollTop);
    }
}

2、监听元素的滑动

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

### Vue 3 中实现左侧滑动返回事件的监听Vue 3 中,可以通过监听触摸事件来检测用户的滑动手势并触发相应的逻辑。具体来说,可以利用 `touchstart` 和 `touchend` 事件计算手指移动的距离和方向,从而判断是否发生了向左滑动的动作。 以下是具体的实现方式: #### 使用 Touch Events 监听手势 通过绑定 `@touchstart` 和 `@touchend` 事件,记录触碰起点和终点坐标,并根据两者的差值判断滑动的方向。 ```javascript <template> <div @touchstart="handleTouchStart" @touchend="handleTouchEnd"> <!-- 页面内容 --> </div> </template> <script> export default { data() { return { startX: 0, // 记录起始 X 坐标 threshold: 50, // 判断为滑动的最小距离阈值 }; }, methods: { handleTouchStart(event) { this.startX = event.touches[0].clientX; // 获取初始触碰点的 X 轴坐标 }, handleTouchEnd(event) { const endX = event.changedTouches[0].clientX; // 获取结束触碰点的 X 轴坐标 const deltaX = this.startX - endX; if (deltaX > this.threshold) { console.log("用户进行了向左滑动"); this.handleSwipeLeft(); // 执行左侧滑动后的操作 } }, handleSwipeLeft() { // 这里编写处理左侧滑动返回的具体逻辑 history.back(); }, }, }; </script> ``` 上述代码实现了对左侧滑动的手势识别功能[^1]。当用户从右向左滑动超过设定的阈值,会调用 `history.back()` 返回上一页。 --- #### 结合 Router 实现导航控制 如果项目中使用了 Vue Router,则可以在滑动事件中直接调用 `$router.go(-1)` 来完成返回操作。 ```javascript methods: { handleSwipeLeft() { this.$router.go(-1); // 如果使用 Vue Router,可以直接返回上一页 }, }, ``` 这种方式更加适合单页应用(SPA),能够无缝集成路由管理的功能[^2]。 --- #### 动态调整灵敏度 为了提升用户体验,可以根据实际需求动态调整滑动的敏感程度。例如,在某些场景下可能需要更高的精度才能触发返回动作。 ```javascript data() { return { threshold: window.innerWidth * 0.1, // 设置滑动阈值为屏幕宽度的 10% }; }, ``` 此设置使得只有当用户滑动的距离达到屏幕宽度的一定比例才会触发返回行为。 --- ### 总结 以上展示了如何在 Vue 3监听左侧滑动返回事件的方法。核心思路是借助原生的 `touchstart` 和 `touchend` 事件捕获用户的手势数据,并基于这些数据执行特定的操作。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值