1、vue如何实现回到顶部
浏览网页的时候经常看到回到顶部这个功能,具体怎么实现呢?后面总结再说,怕你们等不及划走
废话不多说,直接上代码,复制代码就能直接运行 文件是vue文件,在router--index.js 里添加路由才能运行`
index.js
PS:记得更改vue文件路径
{
path: '/top',
name: 'top',
component:() => import('@/views/back_top.vue')
},
back_top.vue
<template>
<div class="back-top">
<van-icon
href="javascript:void(0);"
class="top"
name="back-top"
@click="backTop"
v-if="showBtn"
/>
<p style="text-align: center;">往下拉,出现回到顶部按钮</p>
<div v-for="s in 100" class="background-color">{{s}}</div>
</div>
</template>
<script>
import Vue from 'vue';
export default {
data() {
return {
showBtn: false,
}
},
created() {
},
mounted() {
window.addEventListener("scroll", this.showbtn, true);
},
methods: {
showbtn() {
let that = this;
let scrollTop =
window.pageYOffset ||
document.documentElement.scrollTop ||
document.body.scrollTop;
that.scrollTop = scrollTop;
if (scrollTop > 900) {
this.showBtn = true;
} else {
this.showBtn = false;
}
},
backTop() {
var 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);
},
}
};
</script>
<style>
.top {
height: 35px;
width: 37px;
position: fixed;
right: 4%;
bottom: 11%;
text-align: center;
line-height: 35px;
font-size: 25px;
background-color: #fff;
border-radius: 50%;
box-shadow: 0px 1px 3px 1px #888888;
z-index: 999;
}
.background-color{
width: 100%;
height: 80px;
background-color: pink;
}
</style>
2、总结
这个回到顶部动能是使用scrollTop 实现的 首先,我来简单介绍一下原理
1.根据网页的滚动高度,判断是否显示回到顶部功能按钮,这里我设置了900的高度
2.点击按钮时,触发回到顶部事件,如果要追求视觉效果的话,可以加入定时器。
3.加了定时器,就是实现点击之后它会有一个慢慢向上滑动的效果
3、具体实现效果如下
|