返回顶部
<template>
<div class="hello">
<p>kkkd</p>
<p>kkkd</p>
<p>kkkd</p>
<p>kkkd</p>
<p>kkkd</p>
<p>kkkd</p>
<p>kkkd</p>
<p>kkkd</p>
<p>kkkd</p>
<div class="top" v-show="btnFlag" @click="backTop">返回顶部</div>
</div>
</template>
<script>
export default {
name: 'helloWorld',
data () {
return {
btnFlag: false,
}
},
mounted () {
// 此处true需要加上,不加滚动事件可能绑定不成功
window.addEventListener("scroll", this.handleScroll, true);
},
methods: {
// 点击图片回到顶部方法,加计时器是为了过渡顺滑
backTop() {
let top = document.documentElement.scrollTop || document.body.scrollTop;
// 实现滚动效果
const timeTop = setInterval(() => {
document.body.scrollTop = document.documentElement.scrollTop = top -= 50;
if (top <= 0) {
clearInterval(timeTop);
}
}, 10);
},
//显示隐藏
handleScroll() {
let scrolltop = document.documentElement.scrollTop || document.body.scrollTop;
scrolltop > 300 ? (this.btnFlag = true) : (this.btnFlag = false);
},
}
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
.hello{
width: 100%;
height: 100%;
}
p{
width: 100%;
height: 300px;
margin-top: 100px;
}
.top{
position: fixed;
bottom: 88px;
width: 40px;
height: 40px;
border-radius: 50%;
background: red;
text-align: center;
font-size: 14px;
padding-top: 5px;
right: 20px;
cursor: pointer;
}
</style>