问题:

 在写移动端项目时,总会遇到列表数据很多,下滑很多页后,想瞬间返回顶部,进行其他操作的需求,所以,手写点击返回顶部的需求,势在必行。

思路: 

  •  做一个按钮,在滚动条距离顶部多少距离时显示出来
  • 点击按钮置顶:也就是改变滚动条距离顶部的距离
  • 返回顶部滚动效果:做一个定时器,在多少时间内减少多少的距顶距离
  • 按钮的显隐:设置按钮在什么高度显示和隐藏

代码: 

// 按钮,vant组件的button按钮
<van-button 
    v-show="scrollType" 
    round icon="back-top" 
    class="btn_top" 
    @click="backTop" />
data(){
    return {
        // 按钮显隐控制字段
        scrollType: false    
    }
}
mounted() {
    // 必须为true
    window.addEventListener('scroll', this.handleScroll, true)
},
destroyed() {
    // 销毁
    window.removeEventListener('scroll', this.handleScroll)
},
// 点击返回顶部
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)
    }
  }, 15)
},
// 按钮显示隐藏监听
handleScroll() {
  const scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop
  if (scrollTop > 600) {
    this.scrollType = true // 显示
  } else {
    this.scrollType = false // 隐藏
  }
},

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐