zepto-scrollTo插件

var scroll = function(settings) {
      var DEFAULTS = {
        endY: $.os.android ? 1 : 0,
        duration: 200,
        updateRate: 15
      };

      var interpolate = function (source, target, shift) {
        return (source + (target - source) * shift);
      };

      var easing = function (pos) {
        return (-Math.cos(pos * Math.PI) / 2) + .5;
      }; 
     var options = $.extend({}, DEFAULTS, settings);

      if (options.duration === 0) {
        window.scrollTo(0, options.endY);
        if (typeof options.callback === 'function') options.callback();
        return;
      }

     var startY = window.pageYOffset,
        startT = Date.now(),
        finishT = startT + options.duration;

     var animate = function() {
      var now = Date.now(),
          shift = (now > finishT) ? 1 : (now - startT) / options.duration;

      window.scrollTo(0, interpolate(startY, options.endY, easing(shift)));

      if (now < finishT) {
        setTimeout(animate, options.updateRate);
      }
      else {
        if (typeof options.callback === 'function') options.callback();
      }
     };

    animate();
  };

 
  $.scrollTo = scroll;
 

猜你喜欢

转载自blog.csdn.net/weixin_42153372/article/details/84661113