1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > vue实现页面返回顶部功能

vue实现页面返回顶部功能

时间:2023-09-26 06:53:52

相关推荐

vue实现页面返回顶部功能

vue实现页面返回顶部功能

注:记自己在项目中关于回到顶部遇到的问题

问题:

vue监听滚动条window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop一直为0

原因:

页面中的一个div定义了overflow-y:auto,而页面滚动一直滚动的时这个div window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop当然一直为0,

解决办法:

将overflow-y:auto去掉或改为overflow-y:visible

​<template><div id="goTop"><div class="goTop" v-show="goTopShow" @click="goTop">回到顶部</div></div></template><script>export default {name: "goTop",data() {return {scrollTop: "",goTopShow: false};},watch: {scrollTop(val) {if (this.scrollTop > 500) {this.goTopShow = true;} else {this.goTopShow = false;}}},methods: {handleScroll() {this.scrollTop =window.pageYOffset ||document.documentElement.scrollTop ||document.body.scrollTop;if (this.scrollTop > 500) {this.goTopShow = true;}},goTop() {let timer = null,_that = this;cancelAnimationFrame(timer);timer = requestAnimationFrame(function fn() {if (_that.scrollTop > 0) {_that.scrollTop -= 250;document.body.scrollTop = document.documentElement.scrollTop =_that.scrollTop;timer = requestAnimationFrame(fn);} else {cancelAnimationFrame(timer);_that.goTopShow = false;}});}},mounted() {window.addEventListener("scroll", this.handleScroll);},destroyed() {window.removeEventListener("scroll", this.handleScroll);}};</script><style scoped lang="less">.goTop {position: fixed;right: 20px;bottom: 160px;width: 40px;height: 40px;border-radius: 50%;background: #fff;padding: 10px;cursor: pointer;box-shadow: 0 0 6px rgba(0, 0, 0, 0.12);}</style>​

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。