mui.animation.js 809 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. /**
  2. * mui animation
  3. */
  4. (function($, window) {
  5. /**
  6. * scrollTo
  7. */
  8. $.scrollTo = function(scrollTop, duration, callback) {
  9. duration = duration || 1000;
  10. var scroll = function(duration) {
  11. if (duration <= 0) {
  12. window.scrollTo(0, scrollTop);
  13. callback && callback();
  14. return;
  15. }
  16. var distaince = scrollTop - window.scrollY;
  17. setTimeout(function() {
  18. window.scrollTo(0, window.scrollY + distaince / duration * 10);
  19. scroll(duration - 10);
  20. }, 16.7);
  21. };
  22. scroll(duration);
  23. };
  24. $.animationFrame = function(cb) {
  25. var args, isQueued, context;
  26. return function() {
  27. args = arguments;
  28. context = this;
  29. if (!isQueued) {
  30. isQueued = true;
  31. requestAnimationFrame(function() {
  32. cb.apply(context, args);
  33. isQueued = false;
  34. });
  35. }
  36. };
  37. };
  38. })(mui, window);