效果
核心代码
//页面垂直缓动的动画
function moveTop(obj, target, callback) {
// 清除多次点击后的定时器,保留最新的那一次
clearInterval(obj.timer);
// 使用obj.timer,把timer当作obj的属性,如果使用var timer = ,调用一次就会开辟一次内存空间
obj.timer = setInterval(function () {
//对步长向上取整,因为除以10可能有小数
var step = (target - window.pageYOffset) / 10;
step = step > 0 ? Math.ceil(step) : Math.floor(step);
//达到目标,清除定时器
if (window.pageYOffset == target) {
clearInterval(obj.timer);
if (callback) {
callback();
}
}
// 只要还没到目标位置,就加上步长,继续走