vue阻止页面滚动

公司h5同一个页面要做三个带灰色背景弹窗,用的是vant组件,组件里面有自带的遮罩层。
但是

<div class="magnify" v-show="isShow" @click.self="hide()" @touchmove.prevent @mousewheel.prevent></div>

首先,这个div就是整个遮罩组件的根组件,核心就是div上的事件绑定。
@touchmove 是触摸移动事件
@mousewheel 是鼠标滚轮事件

### Vue 中监听页面滚动事件的实现方法 在 Vue 环境下,可以通过原生 JavaScript 的 `addEventListener` 方法来监听页面滚动事件,并结合 Vue 的生命周期钩子函数完成逻辑处理。以下是具体的实现方式: #### 使用 `addEventListener` 添加滚动监听 可以利用 `window.addEventListener(&#39;scroll&#39;, handler)` 来绑定滚动事件处理器[^1]。为了防止内存泄漏,在组件销毁时应调用 `removeEventListener` 移除事件监听。 ```javascript export default { mounted() { window.addEventListener(&#39;scroll&#39;, this.handleScroll); }, beforeDestroy() { window.removeEventListener(&#39;scroll&#39;, this.handleScroll); }, methods: { handleScroll() { const scrollPosition = window.scrollY; console.log(`当前滚动距离顶部的距离为 ${scrollPosition}px`); // 根据需求动态修改 DOM 或状态 if (scrollPosition > 200) { document.getElementById(&#39;myElement&#39;).classList.add(&#39;hidden&#39;); } else { document.getElementById(&#39;myElement&#39;).classList.remove(&#39;hidden&#39;); } } } }; ``` 上述代码展示了如何通过 `handleScroll` 函数捕获滚动位置并根据条件隐藏或显示某个元素[^3]。 --- #### 滚动吸附效果优化 当需要实现更平滑的滚动吸附效果时,除了基本的滚动监听外,还需要注意性能优化以及合理的吸附逻辑设计[^2]。例如,使用 `requestAnimationFrame` 替代频繁触发的回调函数,减少不必要的计算开销。 ```javascript methods: { handleScroll() { cancelAnimationFrame(this.requestId); this.requestId = requestAnimationFrame(() => { const scrollTop = window.scrollY; if (scrollTop >= 500 && !this.isSticky) { this.$refs.nav.classList.add(&#39;sticky&#39;); this.isSticky = true; } else if (scrollTop < 500 && this.isSticky) { this.$refs.nav.classList.remove(&#39;sticky&#39;); this.isSticky = false; } }); } } ``` 此部分代码引入了 `cancelAnimationFrame` 和 `requestAnimationFrame` 组合,用于提升滚动过程中的动画流畅度。 --- #### 被动模式(Passive Event Listener) 为了避免某些情况下滚动阻塞问题,可以在绑定事件时设置 `{ passive: true }` 参数。这会告诉浏览器不要阻止默认行为,从而提高滚动效率。 ```javascript mounted() { window.addEventListener( &#39;scroll&#39;, this.handleScroll, { passive: true } ); }, beforeDestroy() { window.removeEventListener( &#39;scroll&#39;, this.handleScroll, { passive: true } ); } ``` 这种配置特别适用于移动端设备上的滚动操作,能够显著改善用户体验。 --- ### 总结 以上介绍了三种核心技巧:基础滚动监听、滚动吸附优化以及被动事件监听器的应用。这些技术可以帮助开发者高效地实现在 Vue 应用程序中对页面滚动事件的有效管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值