Vue回到顶部
<template>
<div id="goTop">
<div class="goTop" v-show="goTopShow" @click="goTop">
回到顶部
</div>
<div style="height:2000px;"></div>
</div>
</template>
<script>
export default {
name: "goTop",
data() {
return {
scrollTop: "",
goTopShow: false,
};
},
methods: {
handleScroll() {
this.scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
if (this.scrollTop > 200) {
this.goTopShow = true;
}
else{
this.goTopShow = false;
}
},
goTop() {
let timer = setInterval(function () {
let osTop = document.documentElement.scrollTop || document.body.scrollTop;
let ispeed = Math.floor(-osTop / 5);
document.documentElement.scrollTop = document.body.scrollTop = osTop + ispeed;
this.isTop = true;
if (osTop === 0) {
clearInterval(timer);
}
}, 30);
},
},
mounted() {
window.addEventListener("scroll", this.handleScroll);
},
destroyed() {
window.removeEventListener("scroll", this.handleScroll);
},
};
</script>
<style scoped>
.goTop {
position: fixed;
right: 40px;
bottom: 60px;
width: 40px;
height: 40px;
border-radius: 50%;
background:
padding: 10px;
cursor: pointer;
box-shadow: 0 0 6px rgba(0, 0, 0, 0.12);
}
</style>