其实思路非常的简单,就是获取滚动条距离顶部的高度,然后变为零就置顶了。过度动画也无非就是一点点变为零的,写一个计时调用器每次减一点直到减为零再取消定时器就可以了
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)
加上滚动超出页面显示开关:
var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
console.log(scrollTop)
if (scrollTop > window.screen.height - 46) {
this.backtopFlag = true
} else {
this.backtopFlag = false
}
tips: 我这里 -46 是为了去掉一个footer的高度