/** * mui animation */ (function($, window) { /** * scrollTo */ $.scrollTo = function(scrollTop, duration, callback) { duration = duration || 1000; var scroll = function(duration) { if (duration <= 0) { window.scrollTo(0, scrollTop); callback && callback(); return; } var distaince = scrollTop - window.scrollY; setTimeout(function() { window.scrollTo(0, window.scrollY + distaince / duration * 10); scroll(duration - 10); }, 16.7); }; scroll(duration); }; $.animationFrame = function(cb) { var args, isQueued, context; return function() { args = arguments; context = this; if (!isQueued) { isQueued = true; requestAnimationFrame(function() { cb.apply(context, args); isQueued = false; }); } }; }; })(mui, window);