12345678910111213141516171819202122232425262728 |
- /**
- * 动画垂直滚动到页面指定位置
- * @param { Number } currentY 当前位置
- * @param { Number } targetY 目标位置
- */
- function scrollAnimation (currentY, targetY) {
- // 获取当前位置方法
- // const currentY = document.documentElement.scrollTop || document.body.scrollTop
- // 计算需要移动的距离
- let needScrollTop = targetY - currentY
- let _currentY = currentY
- setTimeout(() => {
- // 一次调用滑动帧数,每次调用会不一样
- const dist = Math.ceil(needScrollTop / 10)
- _currentY += dist
- window.scrollTo(_currentY, currentY)
- // 如果移动幅度小于十个像素,直接移动,否则递归调用,实现动画效果
- if (needScrollTop > 10 || needScrollTop < -10) {
- scrollAnimation(_currentY, targetY)
- } else {
- window.scrollTo(_currentY, targetY)
- }
- }, 1)
- }
- module.exports = {
- scrollAnimation
- }
|