CSS: simplify hack of css getter for the computed values

Ref gh-1906
This commit is contained in:
Oleg Gaidarenko 2014-12-18 18:36:58 +03:00
parent d9d8906cfd
commit dac716ca65
3 changed files with 18 additions and 10 deletions

View File

@ -72,7 +72,7 @@ if ( window.getComputedStyle ) {
};
curCSS = function( elem, name, computed ) {
var left, rs, rsLeft, ret,
var left, ret,
style = elem.style;
computed = computed || getStyles( elem );
@ -84,7 +84,7 @@ if ( window.getComputedStyle ) {
ret = style[ name ];
}
// From the awesome hack by Dean Edwards
// Simplified hack by Dean Edwards
// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
// If we're not dealing with a regular pixel number
@ -97,21 +97,13 @@ if ( window.getComputedStyle ) {
// Remember the original values
left = style.left;
rs = elem.runtimeStyle;
rsLeft = rs && rs.left;
// Put in the new values to get a computed value out
if ( rsLeft ) {
rs.left = elem.currentStyle.left;
}
style.left = name === "fontSize" ? "1em" : ret;
ret = style.pixelLeft + "px";
// Revert the changed values
style.left = left;
if ( rsLeft ) {
rs.left = rsLeft;
}
}
// Support: IE<9

View File

@ -163,3 +163,8 @@ section { background:#f0f; display:block; }
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
}
.get-computed-value {
padding-left: 50%;
width: 20%;
font-size: 2em;
}

View File

@ -119,6 +119,17 @@ test("css(String|Hash)", function() {
"Make sure that a string z-index is returned from css('z-index') (#14432)." );
});
test( "css(String) computed values", 3, function() {
var div = jQuery( "<div/>" ).addClass( "get-computed-value" ),
fixture = document.getElementById( "qunit-fixture" );
div.appendTo( fixture );
strictEqual( div.css( "padding-left" ), "500px", "should get computed value for padding-left property" );
strictEqual( div.css( "width" ), "200px", "should get computed value for width property" );
strictEqual( div.css( "font-size" ), "32px", "should get computed value for font-size property" );
});
test( "css() explicit and relative values", 29, function() {
var $elem = jQuery("#nothiddendiv");