• zepto返回顶部动画


    点击返回顶部

    function goTop(acceleration, time) {
        acceleration = acceleration || 0.1;
        time = time || 16;
        var x1 = 0;
        var y1 = 0;
        var x2 = 0;
        var y2 = 0;
        var x3 = 0;
        var y3 = 0;
        if (document.documentElement) {
          x1 = document.documentElement.scrollLeft || 0;
          y1 = document.documentElement.scrollTop || 0;
        }
        if (document.body) {
          x2 = document.body.scrollLeft || 0;
          y2 = document.body.scrollTop || 0;
        }
        var x3 = window.scrollX || 0;
        var y3 = window.scrollY || 0;
        // 滚动条到页面顶部的水平距离
        var x = Math.max(x1, Math.max(x2, x3));
        // 滚动条到页面顶部的垂直距离
        var y = Math.max(y1, Math.max(y2, y3));
        // 滚动距离 = 目前距离 / 速度, 因为距离原来越小, 速度是大于 1 的数, 所以滚动距离会越来越小
        var speed = 1 + acceleration;
        window.scrollTo(Math.floor(x / speed), Math.floor(y / speed));
        // 如果距离不为零, 继续调用迭代本函数
        if (x > 0 || y > 0) {
          var invokeFunction = "goTop(" + acceleration + ", " + time + ")";
          window.setTimeout(invokeFunction, time);
        }
      }
      $("#back2top").on("click", function() {
        //$("body").scrollTop(0);
        //window.scrollTo(0,0);
        goTop();
      });

    zepto滚动到某个位置

    $.fn.scrollTo = function(options) {
      var defaults = {
        toT: 0, //滚动目标位置
        durTime: 500, //过渡动画时间
        delay: 30, //定时器时间
        callback: null //回调函数
      };
      var opts = $.extend(defaults, options),
        timer = null,
        _this = this,
        curTop = _this.scrollTop(), //滚动条当前的位置
        subTop = opts.toT - curTop, //滚动条目标位置和当前位置的差值
        index = 0,
        dur = Math.round(opts.durTime / opts.delay),
        smoothScroll = function(t) {
          index++;
          var per = Math.round(subTop / dur);
          if (index >= dur) {
            _this.scrollTop(t);
            window.clearInterval(timer);
            if (opts.callback && typeof opts.callback == 'function') {
              opts.callback();
            }
            return;
          } else {
            _this.scrollTop(curTop + index * per);
          }
        };
      timer = window.setInterval(function() {
        smoothScroll(opts.toT);
      }, opts.delay);
      return _this;
    };
  • 相关阅读:
    shell 脚本编程学习
    LMH6505 vs AD8336
    ubuntu 8.04 NFS服务的配置(转)
    新博客开张了!
    基于ARMlinux环境下的音频系统开发
    可恶的英语考试
    转HashTable(C#)
    我的手机3300
    高效注册DLL控件 让你的IE浏览器复活
    学习.NET2.0随笔
  • 原文地址:https://www.cnblogs.com/woodk/p/5307555.html
Copyright © 2020-2023  润新知