scroll.js 894 B

12345678910111213141516171819202122232425262728
  1. /**
  2. * 动画垂直滚动到页面指定位置
  3. * @param { Number } currentY 当前位置
  4. * @param { Number } targetY 目标位置
  5. */
  6. function scrollAnimation (currentY, targetY) {
  7. // 获取当前位置方法
  8. // const currentY = document.documentElement.scrollTop || document.body.scrollTop
  9. // 计算需要移动的距离
  10. let needScrollTop = targetY - currentY
  11. let _currentY = currentY
  12. setTimeout(() => {
  13. // 一次调用滑动帧数,每次调用会不一样
  14. const dist = Math.ceil(needScrollTop / 10)
  15. _currentY += dist
  16. window.scrollTo(_currentY, currentY)
  17. // 如果移动幅度小于十个像素,直接移动,否则递归调用,实现动画效果
  18. if (needScrollTop > 10 || needScrollTop < -10) {
  19. scrollAnimation(_currentY, targetY)
  20. } else {
  21. window.scrollTo(_currentY, targetY)
  22. }
  23. }, 1)
  24. }
  25. module.exports = {
  26. scrollAnimation
  27. }