实现返回顶部时的滚动效果

以下为在 vue 中的实现

export default {
  methods: {
    scrollTo (element, to, duration) {
      if (duration <= 0) return
      var difference = to - element.scrollTop // 滚动条需要移动的总距离
      var perTick = difference / duration * 10 // 每次需要移动的距离

      setTimeout(() => {
        element.scrollTop = element.scrollTop + perTick
        if (element.scrollTop === to) return // 如果完成要求的移动 则停止调用
        this.scrollTo(element, to, duration - 10) // 递归调用 直到完成规定的移动
      }, 10)
    },
     // 点击返回顶部按钮时触发事件
    hToTop () {
      // 第三个参数设置为 window.pageYOffset / 10 是为了保持滚动速度一致
      this.scrollTo(document.documentElement, 0, window.pageYOffset / 10)
    }
  }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容