Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Fix #13939: Same-unit relative animations
- Loading branch information
Showing
with
41 additions
and
1 deletion.
-
+1
−1
src/effects.js
-
+40
−0
test/unit/effects.js
|
@@ -42,8 +42,8 @@ var fxNow, timerId, |
|
|
|
|
|
// Update tween properties |
|
|
if ( parts ) { |
|
|
start = tween.start = +start || +target || 0; |
|
|
tween.unit = unit; |
|
|
tween.start = +start || +target || 0; |
|
|
// If a +=/-= token was provided, we're doing a relative animation |
|
|
tween.end = parts[ 1 ] ? |
|
|
start + ( parts[ 1 ] + 1 ) * parts[ 2 ] : |
|
|
|
@@ -208,6 +208,46 @@ test("animate(Hash, Object, Function)", function() { |
|
|
}); |
|
|
}); |
|
|
|
|
|
test("animate relative values", function() { |
|
|
stop(); |
|
|
|
|
|
var value = 40, |
|
|
bases = [ "%", "px", "em" ], |
|
|
adjustments = [ "px", "em" ], |
|
|
container = jQuery("<div></div>") |
|
|
.css({ position: "absolute", height: "50em", width: "50em" }), |
|
|
animations = bases.length * adjustments.length; |
|
|
|
|
|
expect( 2 * animations ); |
|
|
|
|
|
jQuery.each( bases, function( _, baseUnit ) { |
|
|
jQuery.each( adjustments, function( _, adjustUnit ) { |
|
|
var base = value + baseUnit, |
|
|
adjust = { height: "+=2" + adjustUnit, width: "-=2" + adjustUnit }, |
|
|
elem = jQuery("<div></div>") |
|
|
.appendTo( container.clone().appendTo("#qunit-fixture") ) |
|
|
.css({ |
|
|
position: "absolute", |
|
|
height: base, |
|
|
width: value + adjustUnit |
|
|
}), |
|
|
baseScale = elem[ 0 ].offsetHeight / value, |
|
|
adjustScale = elem[ 0 ].offsetWidth / value; |
|
|
|
|
|
elem.css( "width", base ).animate( adjust, 100, function() { |
|
|
equal( this.offsetHeight, value * baseScale + 2 * adjustScale, |
|
|
baseUnit + "+=" + adjustUnit ); |
|
|
equal( this.offsetWidth, value * baseScale - 2 * adjustScale, |
|
|
baseUnit + "-=" + adjustUnit ); |
|
|
|
|
|
if ( --animations === 0 ) { |
|
|
start(); |
|
|
} |
|
|
}); |
|
|
}); |
|
|
}); |
|
|
}); |
|
|
|
|
|
test("animate negative height", function() { |
|
|
expect(1); |
|
|
stop(); |
|
|