mirror of
https://github.com/jquery/jquery.git
synced 2025-01-10 18:24:24 +00:00
Fix #13939: Same-unit relative animations
This commit is contained in:
parent
28db00fb6f
commit
00231d5d94
2
src/effects.js
vendored
2
src/effects.js
vendored
@ -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 ] :
|
||||
|
40
test/unit/effects.js
vendored
40
test/unit/effects.js
vendored
@ -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();
|
||||
|
Loading…
Reference in New Issue
Block a user