zoukankan      html  css  js  c++  java
  • jquery.scrollTo-min.js

    jquery.scrollTo-min.js 用户返回顶部及动画到目的地,支持目标值、锚点。

    用法:

    1.引入jQuery

    2.$.scrollTo( this.hash || targetValue, time);  

    example:$.scrollTo( this.hash || 0, 500);

    demo


    jquery.scrollTo-min.js

    ; (function(d) {
        var k = d.scrollTo = function(a, i, e) {
            d(window).scrollTo(a, i, e)
        };
        k.defaults = {
            axis: 'xy',
            duration: parseFloat(d.fn.jquery) >= 1.3 ? 0 : 1
        };
        k.window = function(a) {
            return d(window)._scrollable()
        };
        d.fn._scrollable = function() {
            return this.map(function() {
                var a = this,
                i = !a.nodeName || d.inArray(a.nodeName.toLowerCase(), ['iframe', '#document', 'html', 'body']) != -1;
                if (!i) return a;
                var e = (a.contentWindow || a).document || a.ownerDocument || a;
                return d.browser.safari || e.compatMode == 'BackCompat' ? e.body: e.documentElement
            })
        };
        d.fn.scrollTo = function(n, j, b) {
            if (typeof j == 'object') {
                b = j;
                j = 0
            }
            if (typeof b == 'function') b = {
                onAfter: b
            };
            if (n == 'max') n = 9e9;
            b = d.extend({},
            k.defaults, b);
            j = j || b.speed || b.duration;
            b.queue = b.queue && b.axis.length > 1;
            if (b.queue) j /= 2;
            b.offset = p(b.offset);
            b.over = p(b.over);
            return this._scrollable().each(function() {
                var q = this,
                r = d(q),
                f = n,
                s,
                g = {},
                u = r.is('html,body');
                switch (typeof f) {
                case 'number':
                case 'string':
                    if (/^([+-]=)?d+(.d+)?(px|%)?$/.test(f)) {
                        f = p(f);
                        break
                    }
                    f = d(f, this);
                case 'object':
                    if (f.is || f.style) s = (f = d(f)).offset()
                }
                d.each(b.axis.split(''),
                function(a, i) {
                    var e = i == 'x' ? 'Left': 'Top',
                    h = e.toLowerCase(),
                    c = 'scroll' + e,
                    l = q[c],
                    m = k.max(q, i);
                    if (s) {
                        g[c] = s[h] + (u ? 0 : l - r.offset()[h]);
                        if (b.margin) {
                            g[c] -= parseInt(f.css('margin' + e)) || 0;
                            g[c] -= parseInt(f.css('border' + e + 'Width')) || 0
                        }
                        g[c] += b.offset[h] || 0;
                        if (b.over[h]) g[c] += f[i == 'x' ? 'width': 'height']() * b.over[h]
                    } else {
                        var o = f[h];
                        g[c] = o.slice && o.slice( - 1) == '%' ? parseFloat(o) / 100 * m: o
                    }
                    if (/^d+$/.test(g[c])) g[c] = g[c] <= 0 ? 0 : Math.min(g[c], m);
                    if (!a && b.queue) {
                        if (l != g[c]) t(b.onAfterFirst);
                        delete g[c]
                    }
                });
                t(b.onAfter);
                function t(a) {
                    r.animate(g, j, b.easing, a &&
                    function() {
                        a.call(this, n, b)
                    })
                }
            }).end()
        };
        k.max = function(a, i) {
            var e = i == 'x' ? 'Width': 'Height',
            h = 'scroll' + e;
            if (!d(a).is('html,body')) return a[h] - d(a)[e.toLowerCase()]();
            var c = 'client' + e,
            l = a.ownerDocument.documentElement,
            m = a.ownerDocument.body;
            return Math.max(l[h], m[h]) - Math.min(l[c], m[c])
        };
        function p(a) {
            return typeof a == 'object' ? a: {
                top: a,
                left: a
            }
        }
    })(jQuery);


  • 相关阅读:
    内存管理简介之Buddy算法和slab分配
    进程通信方式介绍
    Linux内核网络栈实现分析(十一)驱动程序层(下)
    Linux内核网络协议栈深入分析(二)sk_buff的操作函数
    Linux内核网络协议栈深入分析(一)与sk_buff有关的几个重要的数据结构
    内核源码学习:伙伴算法
    寒假Day16Dinic模板更新+优化
    寒假Day20:数位dp
    寒假Day21:Catalan Square卡特兰数 JAVA写大数
    寒假Day17UVALive3231Fair Share(最大流+二分)
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/3826726.html
Copyright © 2011-2022 走看看