样式如图
1:在components文件夹下新建BackTop.vue
1<template> 2 <div class="backTopBtn"> 3 <a href="javascript:;"> 4 <div v-if="btnFlag" class="btn" @click="backTop">TOP</div> 5 </a> 6 </div> 7</template> 8 9<script> 10 export default { 11 data() { 12 return { 13 btnFlag: false,//控制top按钮是否显示 14 scroll: null//距离顶部的高度 15 } 16 }, 17 mounted() { 18 window.addEventListener('scroll', this.scrollToTop)//监听浏览器滚动条,并执行this.scrollTop方法 19 }, 20 destroyed() { 21 window.removeEventListener('scroll', this.scrollToTop) 22 }, 23 methods: { 24 // 算距离顶部的高度,当高度大于600显示回顶部图标,小于60则隐藏 25 scrollToTop() { 26 this.scroll = document.documentElement.scrollTop || document.body.scrollTop; 27 if (this.scroll > 600) { 28 this.btnFlag = true 29 } else { 30 this.btnFlag = false 31 } 32 }, 33 // 点击图片回到顶部方法,加计时器是为了过渡顺滑 34 backTop() { 35 let timer = setInterval(() => { 36 let ispeed = Math.floor(-this.scroll / 5) 37 document.documentElement.scrollTop = document.body.scrollTop = this.scroll + ispeed 38 if (this.scroll === 0) { 39 clearInterval(timer) 40 } 41 }, 16) 42 } 43 } 44 } 45</script> 46 47<style lang="scss"> 48 .backTopBtn { 49 position: fixed; 50 right: 8px; 51 bottom: 30px; 52 background-color: rgb(78, 78, 78); 53 font-size: 18px; 54 border-radius: 10px; 55 56 a { 57 color: white; 58 } 59 60 .btn { 61 padding: 17px 10px; 62 } 63 64 } 65 66 .backTopBtn:hover { 67 a { 68 color: orange; 69 } 70 } 71</style>
2:在需要使用的页面
1<BackTop></BackTop> 2import BackTop from "@/components/BackTop.vue"; 3export default { 4 components: { 5 BackTop 6 }, 7}
