Remove offset dependency from css. Move curCSS and getStyles to their own modules. -39 bytes. Close gh-1360.

This commit is contained in:
Timmy Willison
2013-09-10 19:24:26 -05:00
parent 641492b7e1
commit 4ded9be72a
6 changed files with 111 additions and 85 deletions

52
src/css/curCSS.js Normal file
View File

@@ -0,0 +1,52 @@
define([
"../core",
"./var/rnumnonpx",
"./var/rmargin",
"./var/getStyles",
"../css", // Circular, but needs jQuery.style
"../selector" // contains
], function( jQuery, rnumnonpx, rmargin, getStyles ) {
function curCSS( elem, name, computed ) {
var width, minWidth, maxWidth, ret,
style = elem.style;
computed = computed || getStyles( elem );
// Support: IE9
// getPropertyValue is only needed for .css('filter') in IE9, see #12537
ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined;
if ( computed ) {
if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
ret = jQuery.style( elem, name );
}
// Support: iOS < 6
// A tribute to the "awesome hack by Dean Edwards"
// iOS < 6 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels
// this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {
// Remember the original values
width = style.width;
minWidth = style.minWidth;
maxWidth = style.maxWidth;
// Put in the new values to get a computed value out
style.minWidth = style.maxWidth = style.width = ret;
ret = computed.width;
// Revert the changed values
style.width = width;
style.minWidth = minWidth;
style.maxWidth = maxWidth;
}
}
return ret;
}
return curCSS;
});

5
src/css/var/getStyles.js Normal file
View File

@@ -0,0 +1,5 @@
define(function() {
return function( elem ) {
return elem.ownerDocument.defaultView.getComputedStyle( elem, null );
};
});

3
src/css/var/rmargin.js Normal file
View File

@@ -0,0 +1,3 @@
define(function() {
return (/^margin/);
});

5
src/css/var/rnumnonpx.js Normal file
View File

@@ -0,0 +1,5 @@
define([
"../../var/pnum"
], function( pnum ) {
return new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
});