benbarnett / jquery-animate-enhanced

Extend $.animate() to detect CSS transitions for Webkit, Mozilla, IE>=10 and Opera and convert animations automatically.
http://playground.benbarnett.net/jquery-animate-enhanced/
MIT License
1.39k stars 196 forks source link

jquery.animate-enhanced plugin

Extend $.animate() to detect CSS transitions for Webkit, Mozilla, IE >= 10 and Opera and convert animations automatically. Compatible with IE6+

Tested with jQuery 1.3.2 to 1.8.0

Properties supported: (more to come)

Note that any properties not mentioned above will simply be handled by the standard jQuery $.animate() method. This plugin adds new functionality without taking any away.

The idea is to simply enhance existing animations with a lightweight 'drop-in' plugin. Those looking for features such as IE transformations & translate() functionality should consider http://plugins.jquery.com/project/2d-transform

Demo

Simple animation demo and documentation found here: http://playground.benbarnett.net/jquery-animate-enhanced/

What it does

The plugin will analyse the properties you're animating on, and select the most appropriate method for the browser in use. This means your transitions on left, top and opacity will convert to a CSS3 transition on Webkit & Mozilla agents that support it, and Opera 10.50+. If the user is on a browser that has no CSS3 transitions, this plugin knows about it and won't get involved. Silent degradation.

Multiple callback mechanisms are created internally to monitor for DOM manipulation and for all 'transitionend' CSS3 events to be picked up. This means you have one neat callback() for the whole animation regardless on whether the plugin is using CSS3, DOM, or both for its animations.

Progressively enhanced CSS3 animations without having to do any browser detection or special CSS, therefore using the same Javascript across your applications and websites.

As this plugin uses CSS3 translate where available, there is an internal callback mechanism to reset the 'left' and/or 'top' properties so that your layout is unaffected.

Usage

Usage is identical to the jQuery animate() function, but it comes with 3 new paramaters, which are totally optional and safe to leave untouched for general use:

avoidTransforms: (Boolean)

By default the plugin will convert left and top animations to the CSS3 style -webkit-transform (or equivalent) to aid hardware acceleration. This functionality can be disabled by setting this to true.

useTranslate3d: (Boolean)

This will be auto-detected and set to true if the browser supports it. Set to true/false to force a specific mode. 3D is recommended for iPhone/iPad development (here's why).

leaveTransforms: (Boolean)

By default if the plugin is animating a left or a top property, the translate (2d or 3d depending on setting above) CSS3 transformation will be used. To preserve other layout dependencies, once the transition is complete, these transitions are removed and converted back to the real left and top values. Set this to true to skip this functionality.

avoidCSSTransitions: (Boolean)

Set this to true to revert to native animate() method, avoiding the plugin entirely. The default for this setting is false, but can be overridden using $.toggleDisabledByDefault()

Useful methods

The following methods have been added to the public jQuery object, which you may or may not find useful:

Note

Since v0.77, the plugin will now automatically use 3D Translations where supported. To override this functionality, you can either use the parameter above, or run $.toggle3DByDefault();

Changelog

1.11 (08/07/2014):

1.10 (09/04/2014):

1.09 (09/04/2014):

1.08 (16/01/2014):

1.07 (06/12/2013):

1.06 (06/12/2013):

1.05 (14/08/2013):

1.04 (14/08/2013):

1.03 (19/7/2013):

1.02 (8/5/2013):

1.01 (8/5/2013):

1.0 (8/5/2103):

0.99 (5/12/2012):

0.98 (12/11/2012):

0.97 (6/11/2012):

0.96a (20/08/2012):

0.96 (20/08/2012):

0.95 (20/08/2012):

0.94 (20/08/2012):

0.93 (6/8/2012):

0.92 (6/8/2012):

0.91 (2/4/2012):

0.90 (7/3/2012):

0.89 (24/1/2012):

0.88 (24/1/2012):

0.87 (24/1/2012):

0.86 (9/1/2012):

0.85 (20/12/2011):

0.80 (13/09/2011):

0.79 (06/09/2011):

0.78 (02/09/2011):

0.77 (02/09/2011):

0.76 (28/06/2011):

0.75 (15/06/2011):

0.74 (28/05/2011):

0.73 (05/03/2011):

0.72 (05/03/2011):

0.71 (05/03/2011):

0.70 (17/03/2011):

0.68 (15/02/2011):

0.67 (15/02/2011):

0.66 (15/02/2011):

0.65 (01/02/2011):

0.64 (27/01/2011):

0.63 (12/01/2011):

0.62 (10/01/2011):

0.61 (10/01/2011):

0.60 (06/01/2011):

0.55 (22/12/2010):

0.54a (22/12/2010):

0.54 (22/12/2010):

0.53 (17/11/2010):

0.52 (16/11/2010):

0.51 (08/11/2010):

0.50 (08/11/2010):

0.49 (19/10/2010):

0.48 (13/10/2010):

0.47 (12/10/2010);

0.46 (07/10/2010);

0.45 (06/10/2010):

0.4 (05/10/2010):

Credits