vue监听滚动 距离

该文章描述了一个Vue组件的方法,通过在`mounted`生命周期钩子中添加滚动事件监听器`handleScroll`,当滚动位置超过361像素时,设置`isFixed`为`true`,实现元素固定定位。这个机制常用于页面头部导航的固定效果。

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

 mounted() {
    window.addEventListener('scroll', this.handleScroll, true)
  },
    handleScroll(e) {
      const scrollTop = e.target.scrollTop
      if (scrollTop > 361) {
        this.isFixed = true
        console.log('固定')
      } else {
        this.isFixed = true
      }
    },
### Vue3 中实现监听页面滚动事件并获取 `scrollTop` 值 为了在 Vue3 中有效地监听页面滚动事件并获取滚动距离顶部的距离 (`scrollTop`),可以采用如下方法: #### 使用组合式 API (Composition API) ```javascript import { ref, onMounted, onBeforeUnmount } from 'vue'; export default { setup() { const topNavBg = ref({ backgroundColor: '' }); const scrollTop = ref(0); function handleScroll() { scrollTop.value = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop; console.log(scrollTop.value, '滚动距离'); // 可以在此处根据滚动位置改变样式或其他逻辑操作 if (scrollTop.value > 100) { topNavBg.value.backgroundColor = '#fff'; } else { topNavBg.value.backgroundColor = ''; } } onMounted(() => { window.addEventListener('scroll', handleScroll); }); onBeforeUnmount(() => { window.removeEventListener('scroll', handleScroll); }); return { topNavBg, scrollTop }; }, }; ``` 此代码片段展示了如何利用 Vue3 的 Composition API 来设置响应式的属性 `topNavBg` 和 `scrollTop`。当组件挂载时添加滚动事件监听器,在卸载前移除该监听器以防内存泄漏。 对于选项式 API (Options API),则可以直接基于给定的引用进行调整[^1]: ```javascript export default { data() { return { topNavBg: { backgroundColor: '' }, scrollTop: 0 }; }, mounted() { window.addEventListener('scroll', this.handleScroll); // 监听页面滚动 }, methods: { handleScroll() { this.scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop; console.log(this.scrollTop, '滚动距离'); // 根据滚动位置修改导航栏背景颜色 if (this.scrollTop > 100) { this.topNavBg.backgroundColor = '#fff'; } else { this.topNavBg.backgroundColor = ''; } } }, beforeDestroy() { window.removeEventListener('scroll', this.handleScroll); // 移除滚动监听 } } ``` 上述两种方式都可以有效解决无法监听到页面滚动的问题,并能够正确获取 `scrollTop` 的值来执行相应的业务逻辑处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值