UNPKG

web-utils-super

Version:

前端函数库

41 lines (39 loc) 1.05 kB
let getScrollTop = require('./getScrollTop') let setScrollTop = require('./setScrollTop') let requestAnimFrame = (function () { return ( window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function (callback) { window.setTimeout(callback, 1000 / 60) } ) })() /** * * @desc 在${duration}时间内,滚动条平滑滚动到${to}指定位置 * @param {Number} to * @param {Number} duration */ function scrollTo(to, duration) { if (duration < 0) { setScrollTop(to) return } let diff = to - getScrollTop() if (diff === 0) return let step = (diff / duration) * 10 requestAnimFrame(function () { if (Math.abs(step) > Math.abs(diff)) { setScrollTop(getScrollTop() + diff) return } setScrollTop(getScrollTop() + step) if ((diff > 0 && getScrollTop() >= to) || (diff < 0 && getScrollTop() <= to)) { return } scrollTo(to, duration - 16) }) } module.exports = scrollTo