1
1
/*!
2
- * jQuery Smooth Scroll - v1.6.0 - 2015-12-22
2
+ * jQuery Smooth Scroll - v1.6.0 - 2015-12-26
3
3
* https://github.com/kswedberg/jquery-smooth-scroll
4
4
* Copyright (c) 2015 Karl Swedberg
5
5
* Licensed MIT
6
6
*/
7
- ( function ( e ) { "function" == typeof define && define . amd ?define ( [ "jquery" ] , e ) :"object" == typeof module && module . exports ?e ( require ( "jquery" ) ) :e ( jQuery ) } ) ( function ( e ) { function t ( e ) { return e . replace ( / ( : | \. | \/ ) / g, "\\$1" ) } var l = "1.6.0" , o = { } , n = { exclude :[ ] , excludeWithin :[ ] , offset :0 , direction :"top" , delegateSelector :null , scrollElement :null , scrollTarget :null , beforeScroll :function ( ) { } , afterScroll :function ( ) { } , easing :"swing" , speed :400 , autoCoefficient :2 , preventDefault :! 0 } , s = function ( t ) { var l = [ ] , o = ! 1 , n = t . dir && "left" === t . dir ?"scrollLeft" :"scrollTop" ; return this . each ( function ( ) { var t = e ( this ) ; if ( this !== document && this !== window ) return ! document . scrollingElement || this !== document . documentElement && this !== document . body ?( t [ n ] ( ) > 0 ?l . push ( this ) :( t [ n ] ( 1 ) , o = t [ n ] ( ) > 0 , o && l . push ( this ) , t [ n ] ( 0 ) ) , void 0 ) :( l . push ( document . scrollingElement ) , ! 1 ) } ) , l . length || this . each ( function ( ) { "BODY" === this . nodeName && ( l = [ this ] ) } ) , "first" === t . el && l . length > 1 && ( l = [ l [ 0 ] ] ) , l } ; e . fn . extend ( { scrollable :function ( e ) { var t = s . call ( this , { dir :e } ) ; return this . pushStack ( t ) } , firstScrollable :function ( e ) { var t = s . call ( this , { el :"first" , dir :e } ) ; return this . pushStack ( t ) } , smoothScroll :function ( l , o ) { if ( l = l || { } , "options" === l ) return o ?this . each ( function ( ) { var t = e ( this ) , l = e . extend ( t . data ( "ssOpts" ) || { } , o ) ; e ( this ) . data ( "ssOpts" , l ) } ) :this . first ( ) . data ( "ssOpts" ) ; var n = e . extend ( { } , e . fn . smoothScroll . defaults , l ) , s = e . smoothScroll . filterPath ( location . pathname ) , r = function ( l ) { var o = this , r = e ( this ) , i = e . extend ( { } , n , r . data ( "ssOpts" ) || { } ) , c = n . exclude , a = i . excludeWithin , f = 0 , u = 0 , h = ! 0 , d = { } , m = location . hostname === o . hostname || ! o . hostname , p = i . scrollTarget || e . smoothScroll . filterPath ( o . pathname ) === s , g = t ( o . hash ) ; if ( i . scrollTarget || m && p && g ) { for ( ; h && c . length > f ; ) r . is ( t ( c [ f ++ ] ) ) && ( h = ! 1 ) ; for ( ; h && a . length > u ; ) r . closest ( a [ u ++ ] ) . length && ( h = ! 1 ) } else h = ! 1 ; h && ( i . preventDefault && l . preventDefault ( ) , e . extend ( d , i , { scrollTarget :i . scrollTarget || g , link :o } ) , e . smoothScroll ( d ) ) } ; return null !== l . delegateSelector ?this . undelegate ( l . delegateSelector , "click.smoothscroll" ) . delegate ( l . delegateSelector , "click.smoothscroll" , r ) :this . unbind ( "click.smoothscroll" ) . bind ( "click.smoothscroll" , r ) , this } } ) , e . smoothScroll = function ( t , l ) { if ( "options" === t && "object" == typeof l ) return e . extend ( o , l ) ; var n , s , r , i , c , a = 0 , f = "offset" , u = "scrollTop" , h = { } , d = { } ; "number" == typeof t ?( n = e . extend ( { link :null } , e . fn . smoothScroll . defaults , o ) , r = t ) :( n = e . extend ( { link :null } , e . fn . smoothScroll . defaults , t || { } , o ) , n . scrollElement && ( f = "position" , "static" === n . scrollElement . css ( "position" ) && n . scrollElement . css ( "position" , "relative" ) ) ) , u = "left" === n . direction ?"scrollLeft" :u , n . scrollElement ?( s = n . scrollElement , / ^ (?: H T M L | B O D Y ) $ / . test ( s [ 0 ] . nodeName ) || ( a = s [ u ] ( ) ) ) :s = e ( "html, body" ) . firstScrollable ( n . direction ) , n . beforeScroll . call ( s , n ) , r = "number" == typeof t ?t :l || e ( n . scrollTarget ) [ f ] ( ) && e ( n . scrollTarget ) [ f ] ( ) [ n . direction ] || 0 , h [ u ] = r + a + n . offset , i = n . speed , "auto" === i && ( c = Math . abs ( h [ u ] - s [ u ] ( ) ) , i = c / n . autoCoefficient ) , d = { duration :i , easing :n . easing , complete :function ( ) { n . afterScroll . call ( n . link , n ) } } , n . step && ( d . step = n . step ) , s . length ?s . stop ( ) . animate ( h , d ) :n . afterScroll . call ( n . link , n ) } , e . smoothScroll . version = l , e . smoothScroll . filterPath = function ( e ) { return e = e || "" , e . replace ( / ^ \/ / , "" ) . replace ( / (?: i n d e x | d e f a u l t ) .[ a - z A - Z ] { 3 , 4 } $ / , "" ) . replace ( / \/ $ / , "" ) } , e . fn . smoothScroll . defaults = n } ) ;
7
+ ! function ( a ) { "function" == typeof define && define . amd ?
8
+ // AMD. Register as an anonymous module.
9
+ define ( [ "jquery" ] , a ) :a ( "object" == typeof module && module . exports ?require ( "jquery" ) :jQuery ) } ( function ( a ) { function b ( a ) { return a . replace ( / ( : | \. | \/ ) / g, "\\$1" ) } var c = "1.6.0" , d = { } , e = { exclude :[ ] , excludeWithin :[ ] , offset :0 ,
10
+ // one of 'top' or 'left'
11
+ direction :"top" ,
12
+ // if set, bind click events through delegation
13
+ // supported since jQuery 1.4.2
14
+ delegateSelector :null ,
15
+ // jQuery set of elements you wish to scroll (for $.smoothScroll).
16
+ // if null (default), $('html, body').firstScrollable() is used.
17
+ scrollElement :null ,
18
+ // only use if you want to override default behavior
19
+ scrollTarget :null ,
20
+ // fn(opts) function to be called before scrolling occurs.
21
+ // `this` is the element(s) being scrolled
22
+ beforeScroll :function ( ) { } ,
23
+ // fn(opts) function to be called after scrolling occurs.
24
+ // `this` is the triggering element
25
+ afterScroll :function ( ) { } , easing :"swing" , speed :400 ,
26
+ // coefficient for "auto" speed
27
+ autoCoefficient :2 ,
28
+ // $.fn.smoothScroll only: whether to prevent the default click action
29
+ preventDefault :! 0 } , f = function ( b ) { var c = [ ] , d = ! 1 , e = b . dir && "left" === b . dir ?"scrollLeft" :"scrollTop" ;
30
+ // If no scrollable elements, fall back to <body>,
31
+ // if it's in the jQuery collection
32
+ // (doing this because Safari sets scrollTop async,
33
+ // so can't set it to 1 and immediately get the value.)
34
+ // Use the first scrollable element if we're calling firstScrollable()
35
+ return this . each ( function ( ) { var b = a ( this ) ; if ( this !== document && this !== window )
36
+ // if scroll(Top|Left) === 0, nudge the element 1px and see if it moves
37
+ // then put it back, of course
38
+ return ! document . scrollingElement || this !== document . documentElement && this !== document . body ?void ( b [ e ] ( ) > 0 ?c . push ( this ) :( b [ e ] ( 1 ) , d = b [ e ] ( ) > 0 , d && c . push ( this ) , b [ e ] ( 0 ) ) ) :( c . push ( document . scrollingElement ) , ! 1 ) } ) , c . length || this . each ( function ( ) { "BODY" === this . nodeName && ( c = [ this ] ) } ) , "first" === b . el && c . length > 1 && ( c = [ c [ 0 ] ] ) , c } ; a . fn . extend ( { scrollable :function ( a ) { var b = f . call ( this , { dir :a } ) ; return this . pushStack ( b ) } , firstScrollable :function ( a ) { var b = f . call ( this , { el :"first" , dir :a } ) ; return this . pushStack ( b ) } , smoothScroll :function ( c , d ) { if ( c = c || { } , "options" === c ) return d ?this . each ( function ( ) { var b = a ( this ) , c = a . extend ( b . data ( "ssOpts" ) || { } , d ) ; a ( this ) . data ( "ssOpts" , c ) } ) :this . first ( ) . data ( "ssOpts" ) ; var e = a . extend ( { } , a . fn . smoothScroll . defaults , c ) , f = function ( c ) { var d = this , f = a ( this ) , g = a . extend ( { } , e , f . data ( "ssOpts" ) || { } ) , h = e . exclude , i = g . excludeWithin , j = 0 , k = 0 , l = ! 0 , m = { } , n = a . smoothScroll . filterPath ( location . pathname ) , o = a . smoothScroll . filterPath ( d . pathname ) , p = location . hostname === d . hostname || ! d . hostname , q = g . scrollTarget || o === n , r = b ( d . hash ) ; if ( g . scrollTarget || p && q && r ) { for ( ; l && j < h . length ; ) f . is ( b ( h [ j ++ ] ) ) && ( l = ! 1 ) ; for ( ; l && k < i . length ; ) f . closest ( i [ k ++ ] ) . length && ( l = ! 1 ) } else l = ! 1 ; l && ( g . preventDefault && c . preventDefault ( ) , a . extend ( m , g , { scrollTarget :g . scrollTarget || r , link :d } ) , a . smoothScroll ( m ) ) } ; return null !== c . delegateSelector ?this . undelegate ( c . delegateSelector , "click.smoothscroll" ) . delegate ( c . delegateSelector , "click.smoothscroll" , f ) :this . unbind ( "click.smoothscroll" ) . bind ( "click.smoothscroll" , f ) , this } } ) , a . smoothScroll = function ( b , c ) { if ( "options" === b && "object" == typeof c ) return a . extend ( d , c ) ; var e , f , g , h , i , j = 0 , k = "offset" , l = "scrollTop" , m = { } , n = { } ; "number" == typeof b ?( e = a . extend ( { link :null } , a . fn . smoothScroll . defaults , d ) , g = b ) :( e = a . extend ( { link :null } , a . fn . smoothScroll . defaults , b || { } , d ) , e . scrollElement && ( k = "position" , "static" === e . scrollElement . css ( "position" ) && e . scrollElement . css ( "position" , "relative" ) ) ) , l = "left" === e . direction ?"scrollLeft" :l , e . scrollElement ?( f = e . scrollElement , / ^ (?: H T M L | B O D Y ) $ / . test ( f [ 0 ] . nodeName ) || ( j = f [ l ] ( ) ) ) :f = a ( "html, body" ) . firstScrollable ( e . direction ) , e . beforeScroll . call ( f , e ) , g = "number" == typeof b ?b :c || a ( e . scrollTarget ) [ k ] ( ) && a ( e . scrollTarget ) [ k ] ( ) [ e . direction ] || 0 , m [ l ] = g + j + e . offset , h = e . speed , "auto" === h && ( i = Math . abs ( m [ l ] - f [ l ] ( ) ) , h = i / e . autoCoefficient ) , n = { duration :h , easing :e . easing , complete :function ( ) { e . afterScroll . call ( e . link , e ) } } , e . step && ( n . step = e . step ) , f . length ?f . stop ( ) . animate ( m , n ) :e . afterScroll . call ( e . link , e ) } , a . smoothScroll . version = c , a . smoothScroll . filterPath = function ( a ) { return a = a || "" , a . replace ( / ^ \/ / , "" ) . replace ( / (?: i n d e x | d e f a u l t ) .[ a - z A - Z ] { 3 , 4 } $ / , "" ) . replace ( / \/ $ / , "" ) } ,
39
+ // default options
40
+ a . fn . smoothScroll . defaults = e } ) ;
0 commit comments