@@ -10,8 +10,10 @@ var ralpha = /alpha\([^)]*\)/i,
10
10
rmargin = / ^ m a r g i n / ,
11
11
12
12
cssShow = { position : "absolute" , visibility : "hidden" , display : "block" } ,
13
- cssWidth = [ "Left" , "Right" ] ,
14
- cssHeight = [ "Top" , "Bottom" ] ,
13
+
14
+ // order is important!
15
+ cssExpand = [ "Top" , "Right" , "Bottom" , "Left" ] ,
16
+
15
17
curCSS ,
16
18
17
19
getComputedStyle ,
@@ -169,10 +171,10 @@ jQuery.each(["height", "width"], function( i, name ) {
169
171
get : function ( elem , computed , extra ) {
170
172
if ( computed ) {
171
173
if ( elem . offsetWidth !== 0 ) {
172
- return getWH ( elem , name , extra ) ;
174
+ return getWidthOrHeight ( elem , name , extra ) ;
173
175
} else {
174
176
return jQuery . swap ( elem , cssShow , function ( ) {
175
- return getWH ( elem , name , extra ) ;
177
+ return getWidthOrHeight ( elem , name , extra ) ;
176
178
} ) ;
177
179
}
178
180
}
@@ -326,24 +328,23 @@ if ( document.documentElement.currentStyle ) {
326
328
327
329
curCSS = getComputedStyle || currentStyle ;
328
330
329
- function getWH ( elem , name , extra ) {
331
+ function getWidthOrHeight ( elem , name , extra ) {
330
332
331
333
// Start with offset property
332
334
var val = name === "width" ? elem . offsetWidth : elem . offsetHeight ,
333
- which = name === "width" ? cssWidth : cssHeight ,
334
- i = 0 ,
335
- len = which . length ;
335
+ i = name === "width" ? 1 : 0 ,
336
+ len = 4 ;
336
337
337
338
if ( val > 0 ) {
338
339
if ( extra !== "border" ) {
339
- for ( ; i < len ; i ++ ) {
340
+ for ( ; i < len ; i += 2 ) {
340
341
if ( ! extra ) {
341
- val -= parseFloat ( jQuery . css ( elem , "padding" + which [ i ] ) ) || 0 ;
342
+ val -= parseFloat ( jQuery . css ( elem , "padding" + cssExpand [ i ] ) ) || 0 ;
342
343
}
343
344
if ( extra === "margin" ) {
344
- val += parseFloat ( jQuery . css ( elem , extra + which [ i ] ) ) || 0 ;
345
+ val += parseFloat ( jQuery . css ( elem , extra + cssExpand [ i ] ) ) || 0 ;
345
346
} else {
346
- val -= parseFloat ( jQuery . css ( elem , "border" + which [ i ] + "Width" ) ) || 0 ;
347
+ val -= parseFloat ( jQuery . css ( elem , "border" + cssExpand [ i ] + "Width" ) ) || 0 ;
347
348
}
348
349
}
349
350
}
@@ -354,20 +355,20 @@ function getWH( elem, name, extra ) {
354
355
// Fall back to computed then uncomputed css if necessary
355
356
val = curCSS ( elem , name , name ) ;
356
357
if ( val < 0 || val == null ) {
357
- val = elem . style [ name ] || 0 ;
358
+ val = elem . style [ name ] ;
358
359
}
359
360
// Normalize "", auto, and prepare for extra
360
361
val = parseFloat ( val ) || 0 ;
361
362
362
363
// Add padding, border, margin
363
364
if ( extra ) {
364
- for ( ; i < len ; i ++ ) {
365
- val += parseFloat ( jQuery . css ( elem , "padding" + which [ i ] ) ) || 0 ;
365
+ for ( ; i < len ; i += 2 ) {
366
+ val += parseFloat ( jQuery . css ( elem , "padding" + cssExpand [ i ] ) ) || 0 ;
366
367
if ( extra !== "padding" ) {
367
- val += parseFloat ( jQuery . css ( elem , "border" + which [ i ] + "Width" ) ) || 0 ;
368
+ val += parseFloat ( jQuery . css ( elem , "border" + cssExpand [ i ] + "Width" ) ) || 0 ;
368
369
}
369
370
if ( extra === "margin" ) {
370
- val += parseFloat ( jQuery . css ( elem , extra + which [ i ] ) ) || 0 ;
371
+ val += parseFloat ( jQuery . css ( elem , extra + cssExpand [ i ] ) ) || 0 ;
371
372
}
372
373
}
373
374
}
@@ -388,4 +389,29 @@ if ( jQuery.expr && jQuery.expr.filters ) {
388
389
} ;
389
390
}
390
391
392
+ // These hooks are used by animate to expand properties
393
+ jQuery . each ( {
394
+ margin : "" ,
395
+ padding : "" ,
396
+ border : "Width"
397
+ } , function ( prefix , suffix ) {
398
+
399
+ jQuery . cssHooks [ prefix + suffix ] = {
400
+ expand : function ( value ) {
401
+ var i ,
402
+
403
+ // assumes a single number if not a string
404
+ parts = typeof value === "string" ? value . split ( " " ) : [ value ] ,
405
+ expanded = { } ;
406
+
407
+ for ( i = 0 ; i < 4 ; i ++ ) {
408
+ expanded [ prefix + cssExpand [ i ] + suffix ] =
409
+ parts [ i ] || parts [ i - 2 ] || parts [ 0 ] ;
410
+ }
411
+
412
+ return expanded ;
413
+ }
414
+ } ;
415
+ } ) ;
416
+
391
417
} ) ( jQuery ) ;
0 commit comments