fixing bug 4146 - round 2!
This commit is contained in:
parent
ca5bc202ac
commit
e64d3d4e57
2 changed files with 109 additions and 16 deletions
46
src/css.js
46
src/css.js
|
@ -338,25 +338,39 @@ curCSS = getComputedStyle || currentStyle;
|
|||
|
||||
function getWH( elem, name, extra ) {
|
||||
var which = name === "width" ? cssWidth : cssHeight,
|
||||
val = name === "width" ? elem.offsetWidth : elem.offsetHeight;
|
||||
|
||||
if ( extra === "border" ) {
|
||||
return val;
|
||||
cur = curCSS(elem, name),
|
||||
// We're addressing the way Firefox handles certain inputs and buttons, offsetWidth/height actually returns a normal width/height
|
||||
ff = /input|button/i.test( elem.tagName.toLowerCase() ) && curCSS( elem, '-moz-box-sizing' ) === 'border-box';
|
||||
|
||||
// IE will return auto if we try to grab a width/height that is not set
|
||||
if( ff || cur === 'auto') {
|
||||
cur = name === "width" ? elem.offsetWidth : elem.offsetHeight;
|
||||
}
|
||||
|
||||
// Fixes an IE7 effects test. "Chain show hide" was returning "scroll" instead of "visible"
|
||||
if( name == "height" ){
|
||||
elem.offsetHeight;
|
||||
}
|
||||
|
||||
var val = parseFloat(cur) || 0;
|
||||
|
||||
jQuery.each( which, function() {
|
||||
if ( !extra ) {
|
||||
val -= parseFloat(jQuery.css( elem, "padding" + this )) || 0;
|
||||
if ( extra ) {
|
||||
for( var i = 0, len = which.length; i < len ; i++ ) {
|
||||
var dir = which[i];
|
||||
// outerWidth/height
|
||||
if ( extra === "border" || extra === 'margin' ) {
|
||||
val += parseFloat(jQuery.css( elem, "border" + dir + "Width" )) || 0;
|
||||
val += parseFloat(jQuery.css( elem, "padding" + dir )) || 0;
|
||||
if( extra == 'margin' ) {
|
||||
val += parseFloat(jQuery.css( elem, "margin" + dir )) || 0;
|
||||
}
|
||||
}
|
||||
// innerWidth/height
|
||||
else {
|
||||
val += parseFloat(jQuery.css( elem, "padding" + dir )) || 0;
|
||||
}
|
||||
}
|
||||
|
||||
if ( extra === "margin" ) {
|
||||
val += parseFloat(jQuery.css( elem, "margin" + this )) || 0;
|
||||
|
||||
} else {
|
||||
val -= parseFloat(jQuery.css( elem, "border" + this + "Width" )) || 0;
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
return val;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue