折影轻梦
SmoothScroll

平滑滚动的体验非常的爽!

 /*SmoothScroll*/
 (function() {
     function C() {
         if(document.body) {
             var a=document.body, b=document.documentElement, d=window.innerHeight, e=a.scrollHeight;
             n=0<=document.compatMode.indexOf("CSS")?b:a;
             u=a;
             f.keyboardSupport&&window.addEventListener("keydown", K, !1);
             D=!0;
             if(top!=self)E=!0;
             else if(e>d&&(a.offsetHeight<=d||b.offsetHeight<=d)) {
                 var c=!1;
                 b.style.height="auto";
                 setTimeout(function() {
                     c||b.scrollHeight==document.height||(c=!0, setTimeout(function() {
                         b.style.height=document.height+"px";
                         c=!1
                     }
                     , 500))
                 }
                 , 10);
                 n.offsetHeight<=d&&(d=document.createElement("div"), d.style.clear="both", a.appendChild(d))
             }
             f.fixedBackground||(a.style.backgroundAttachment="scroll", b.style.backgroundAttachment="scroll")
         }
     }
     function F(a, b, d, e) {
         e||(e=1E3);
         L(b, d);
         if(1!=f.accelerationMax) {
             var c=+new Date-x;
             c<f.accelerationDelta&&(c=(1+30/c)/2, 1<c&&(c=Math.min(c, f.accelerationMax), b*=c, d*=c));
             x=+new Date
         }
         p.push( {
             x:b, y:d, lastX:0>b?.99:-.99, lastY:0>d?.99:-.99, start:+new Date
         }
         );
         if(!y) {
             var g=a===document.body, h=function(c) {
                 c=+new Date;
                 for(var q=0, r=0, t=0;
                 t<p.length;
                 t++) {
                     var k=p[t], l=c-k.start, n=l>=f.animationTime, m=n?1:l/f.animationTime;
                     f.pulseAlgorithm&&(l=m, 1<=l?m=1:0>=l?m=0:(1==f.pulseNormalize&&(f.pulseNormalize/=G(1)), m=G(l)));
                     l=k.x*m-k.lastX>>0;
                     m=k.y*m-k.lastY>>0;
                     q+=l;
                     r+=m;
                     k.lastX+=l;
                     k.lastY+=m;
                     n&&(p.splice(t, 1), t--)
                 }
                 g?window.scrollBy(q, r):(q&&(a.scrollLeft+=q), r&&(a.scrollTop+=r));
                 b||d||(p=[]);
                 p.length?H(h, a, e/f.frameRate+1):y=!1
             }
             ;
             H(h, a, 0);
             y=!0
         }
     }
     function M(a) {
         D||C();
         var b=a.target, d=I(b);
         if(!d||a.defaultPrevented||"embed"===(u.nodeName||"").toLowerCase()||"embed"===(b.nodeName||"").toLowerCase()&&/\.pdf/i.test(b.src))return!0;
         var b=a.wheelDeltaX||0, e=a.wheelDeltaY||0;
         b||e||(e=a.wheelDelta||0);
         var c;
         if(c=!f.touchpadSupport)if(c=e) {
             c=Math.abs(c);
             h.push(c);
             h.shift();
             clearTimeout(N);
             c=h[0]==h[1]&&h[1]==h[2];
             var g=z(h[0], 120)&&z(h[1], 120)&&z(h[2], 120);
             c=!(c||g)
         }
         else c=void 0;
         if(c)return!0;
         1.2<Math.abs(b)&&(b*=f.stepSize/120);
         1.2<Math.abs(e)&&(e*=f.stepSize/120);
         F(d, -b, -e);
         a.preventDefault()
     }
     function K(a) {
         var b=a.target, d=a.ctrlKey||a.altKey||a.metaKey||a.shiftKey&&a.keyCode!==g.spacebar;
         if(/input|textarea|select|embed/i.test(b.nodeName)||b.isContentEditable||a.defaultPrevented||d||"button"===(b.nodeName||"").toLowerCase()&&a.keyCode===g.spacebar)return!0;
         var e;
         e=b=0;
         var d=I(u), c=d.clientHeight;
         d==document.body&&(c=window.innerHeight);
         switch(a.keyCode) {
             case g.up:e=-f.arrowScroll;
             break;
             case g.down:e=f.arrowScroll;
             break;
             case g.spacebar:e=a.shiftKey?1:-1;
             e=-e*c*.9;
             break;
             case g.pageup:e=.9*-c;
             break;
             case g.pagedown:e=.9*c;
             break;
             case g.home:e=-d.scrollTop;
             break;
             case g.end:c=d.scrollHeight-d.scrollTop-c;
             e=0<c?c+10:0;
             break;
             case g.left:b=-f.arrowScroll;
             break;
             case g.right:b=f.arrowScroll;
             break;
             default:return!0
         }
         F(d, b, e);
         a.preventDefault()
     }
     function O(a) {
         u=a.target
     }
     function A(a, b) {
         for(var d=a.length;
         d--;
         )B[J(a[d])]=b;
         return b
     }
     function I(a) {
         var b=[], d=n.scrollHeight;
         do {
             var e=B[J(a)];
             if(e)return A(b, e);
             b.push(a);
             if(d===a.scrollHeight) {
                 if(!E||n.clientHeight+10<d)return A(b, document.body)
             }
             else if(a.clientHeight+10<a.scrollHeight&&(overflow=getComputedStyle(a, "").getPropertyValue("overflow-y"), "scroll"===overflow||"auto"===overflow))return A(b, a)
         }
         while(a=a.parentNode)
     }
     function L(a, b) {
         a=0<a?1:-1;
         b=0<b?1:-1;
         if(v.x!==a||v.y!==b)v.x=a, v.y=b, p=[], x=0
     }
     function z(a, b) {
         return Math.floor(a/b)==a/b
     }
     function G(a) {
         var b;
         a*=f.pulseScale;
         1>a?b=a-(1-Math.exp(-a)):(b=Math.exp(-1), --a, a=1-Math.exp(-a), b+=a*(1-b));
         return b*f.pulseNormalize
     }
     var w= {
         frameRate:150, animationTime:600, stepSize:120, pulseAlgorithm:!0, pulseScale:6, pulseNormalize:1, accelerationDelta:50, accelerationMax:1, keyboardSupport:!0, arrowScroll:120, touchpadSupport:!0, fixedBackground:!0, excluded:""
     }
     , f=w, E=!1, v= {
         x:0, y:0
     }
     , D=!1, n=document.documentElement, u, h=[120, 120, 120], g= {
         left:37, up:38, right:39, down:40, spacebar:32, pageup:33, pagedown:34, end:35, home:36
     }
     , f=w, p=[], y=!1, x=+new Date, B= {
     }
     ;
     setInterval(function() {
         B= {
         }
     }
     , 1E4);
     var J=function() {
         var a=0;
         return function(b) {
             return b.uniqueID||(b.uniqueID=a++)
         }
     }
     (), N, H=function() {
         return window.requestAnimationFrame||window.webkitRequestAnimationFrame||function(a, b, d) {
             window.setTimeout(a, d||1E3/60)
         }
     }
     (), w=/chrome/i.test(window.navigator.userAgent);
     "onmousewheel"in document&&w&&(window.addEventListener("mousedown", O, !1), window.addEventListener("mousewheel", M, !1), window.addEventListener("load", C, !1))
 }
 )();

16 评论

  1. 我是笨蛋小扁担

    6月

    26日

    Windows 10 Chrome 回复
    大兄弟 目前这个主题显示的看着难受呀~ 颜色(
    1. 我是笨蛋小扁担

      6月

      26日

      Windows 10 Chrome 回复
      回复 我是笨蛋小扁担: 大兄弟 目前这个主题显示的code看着难受呀~ 颜色(
      1. 折影轻梦

        6月

        26日

        Windows 10 QQ浏览器 回复
  2. Jrotty

    2月

    15日

    未知系统 未知浏览器 回复
    发现个bug233
    1. 折影轻梦

      2月

      16日

      未知系统 未知浏览器 回复
  3. Jrotty

    2月

    15日

    未知系统 未知浏览器 回复
    一直无法体会到这个东西的作用,虽然现在我也加了
  4. 神樂坂 玉兔

    2月

    6日

    未知系统 未知浏览器 回复
    我只想知道这个代码插件的名字。。。
    1. 神樂坂 玉兔

      3月

      8日

      未知系统 未知浏览器 回复
      回复 神樂坂 玉兔: 黑色背景高亮插件。
      顯示代碼的那個插件。。。QSQ
    2. 折影轻梦

      2月

      9日

      未知系统 未知浏览器 回复
      回复 神樂坂 玉兔: /SmoothScroll/
  5. eczn

    1月

    26日

    未知系统 未知浏览器 回复
  6. 鹿双

    1月

    23日

    未知系统 未知浏览器 回复
    一个字爽,两个字很爽。
    1. 折影轻梦

      1月

      23日

      未知系统 未知浏览器 回复
  7. CAISIDUO

    1月

    20日

    未知系统 未知浏览器 回复
    这几个评论什么鬼
  8. 维度空间

    9月

    27日

    未知系统 未知浏览器 回复
    ()我是一名小小的学习委员
  9. Jrotty

    9月

    18日

    未知系统 未知浏览器 回复
    愿真主保佑你─=≡Σ((( つ•̀ω•́)つ
  10. 哈哩哈哩

    9月

    13日

    未知系统 未知浏览器 回复
    愿青龙指引着你!(๑╹∀╹๑)