vue回到顶部,滚动条监听,移除监听

本文介绍如何在Vue项目中实现简单的返回顶部功能。通过监听滚动条位置,并根据页面滚动状态显示或隐藏返回顶部按钮。文章详细说明了实现步骤及所需代码。

做到vue项目里有一个回到顶部功能,比较简单,绑定一个点击事件即可,

当触发点击事件,当前页面滚动条的位置为0


实现滚动条监听

1、在methods定义方法

a、滚动条滚动时跟顶部的距离

b、可以看见的内容区域(可视区)的高度

c、滚动条的总高度

2、设置需要实现的功能

如果滚动条跟顶部的距离 > 一个窗口的外部高度,'返回顶部'按钮就会出现

如果滚动条跟顶部的距离 + 可视区的高度 = 滚动条的总高度(也就是到达底部),'返回顶部'按钮就会隐藏

3、在mounted()添加这个监听事件


移除监听

### 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` 的值来执行相应的业务逻辑处理。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值