|
|
/* * transform: A jQuery cssHooks adding 2D/3D transform capabilities to $.fn.css() and $.fn.animate() * * Requirements: * - jQuery 1.5.1+ * - jquery.transition.js for animations * - browser implementing W3C's CSS 2DTransforms for 2D tranform * - browser implementing W3C's CSS 3DTransforms for 3D tranform * * latest version and complete README available on Github: * https://github.com/louisremi/jquery.transform.js
* * Copyright 2011 @louis_remi * Licensed under the MIT license. * * This saved you an hour of work? * Send me music http://www.amazon.co.uk/wishlist/HNTU0468LQON
* */ (function( $, window, document ) { "use strict";
var div = document.createElement("div"), divStyle = div.style, prefixes = [ "O", "ms", "Webkit", "Moz" ], prefix, i = prefixes.length, properties = [ "transform", "transformOrigin", "transformStyle", "perspective", "perspectiveOrigin", "backfaceVisibility" ], property, j = prefixes.length;
// Find the right prefix
while ( i-- ) { if ( prefixes[i] + leadingUppercase( properties[0] ) in divStyle ) { prefix = prefixes[i]; continue; } }
// This browser is not compatible with transforms
if ( !prefix ) { return; }
// Build cssHooks for each property
while ( j-- ) { property = prefix + leadingUppercase( properties[j] );
if ( property in divStyle ) {
// px isn't the default unit of this property
$.cssNumber[ properties[j] ] = true;
// populate cssProps
$.cssProps[ properties[j] ] = property;
// MozTranform requires a complete hook because "px" is required in translate
property === "MozTransform" && ($.cssHooks[ properties[j] ] = { get: function( elem, computed ) { return (computed ? // remove "px" from the computed matrix
$.css( elem, property ).split("px").join(""): elem.style[property] ); }, set: function( elem, value ) { // add "px" to matrices
/matrix\([^)p]*\)/.test(value) && ( value = value.replace(/matrix((?:[^,]*,){4})([^,]*),([^)]*)/, "matrix$1$2px,$3px") ); elem.style[property] = value; } });
} }
function leadingUppercase( word ) { return word.slice(0,1).toUpperCase() + word.slice(1); }
})( jQuery, window, document );
|