| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| |
|
| | ( function( factory ) { |
| | "use strict"; |
| |
|
| | if ( typeof define === "function" && define.amd ) { |
| |
|
| | |
| | define( [ |
| | "jquery", |
| | "../version", |
| | "../effect" |
| | ], factory ); |
| | } else { |
| |
|
| | |
| | factory( jQuery ); |
| | } |
| | } )( function( $ ) { |
| | "use strict"; |
| |
|
| | return $.effects.define( "shake", function( options, done ) { |
| |
|
| | var i = 1, |
| | element = $( this ), |
| | direction = options.direction || "left", |
| | distance = options.distance || 20, |
| | times = options.times || 3, |
| | anims = times * 2 + 1, |
| | speed = Math.round( options.duration / anims ), |
| | ref = ( direction === "up" || direction === "down" ) ? "top" : "left", |
| | positiveMotion = ( direction === "up" || direction === "left" ), |
| | animation = {}, |
| | animation1 = {}, |
| | animation2 = {}, |
| |
|
| | queuelen = element.queue().length; |
| |
|
| | $.effects.createPlaceholder( element ); |
| |
|
| | |
| | animation[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance; |
| | animation1[ ref ] = ( positiveMotion ? "+=" : "-=" ) + distance * 2; |
| | animation2[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance * 2; |
| |
|
| | |
| | element.animate( animation, speed, options.easing ); |
| |
|
| | |
| | for ( ; i < times; i++ ) { |
| | element |
| | .animate( animation1, speed, options.easing ) |
| | .animate( animation2, speed, options.easing ); |
| | } |
| |
|
| | element |
| | .animate( animation1, speed, options.easing ) |
| | .animate( animation, speed / 2, options.easing ) |
| | .queue( done ); |
| |
|
| | $.effects.unshift( element, queuelen, anims + 1 ); |
| | } ); |
| |
|
| | } ); |
| |
|