返回顶部
返回顶部
<template>
<div>
<!--返回顶部按钮-->
<div style="position: fixed;bottom: 100px;right: 50px;">
<i v-if="btnFlag" @click="backTop" class="back-wrap"></i>
</div>
</div>
</template>
<script>
export default {
name: 'backTop',
props:['minHeight'],
data() {
return {
btnFlag: false,
scrollTop:0
}
},
// 组件创建监听scroll此方法
mounted() {
window.addEventListener('scroll', this.scrollToTop)
},
destroyed() {
window.removeEventListener('scroll', this.scrollToTop)
},
methods: {
backTop() {
const _this = this
var timer = setInterval(() => {
var ispeed = Math.floor(-_this.scrollTop / 5)
document.documentElement.scrollTop = document.body.scrollTop = _this.scrollTop + ispeed
if (_this.scrollTop === 0) {
clearInterval(timer)
}
}, 16)
},
scrollToTop() {
const _this = this
var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop
_this.scrollTop = scrollTop
//minHeight大于多少显示,小于多少隐藏
if (_this.scrollTop > _this.minHeight) {
_this.btnFlag = true
} else {
_this.btnFlag = false
}
}
}
}
</script>
<style scoped>
.back-wrap {
width: 0;
height: 0;
position: absolute;
right: 10px;
border: 20px solid #aaa;
border-left-color: transparent;
border-right-color: transparent;
border-top: none;
}
</style>
使用组件
<BackTop :minHeight="height"></BackTop>

浙公网安备 33010602011771号