Fix #11415: Stop non-negative prop undershoot on animation.

This doesn't fix *all* of them (see the ticket for a supposedly complete list) but these were already handy so it was relatively cheap to fix them. If you need others fixed, add a custom step function as was done here. Thanks @scott_gonzalez!
This commit is contained in:
Dave Methvin 2012-03-01 22:31:17 -05:00
parent a52391aa1d
commit 56426261f0
2 changed files with 11 additions and 3 deletions

5
src/effects.js vendored
View File

@ -634,9 +634,8 @@ jQuery.extend( jQuery.fx, {
}
});
// Adds width/height step functions
// Do not set anything below 0
jQuery.each([ "width", "height" ], function( i, prop ) {
// Ensure props that can't be negative don't go there on undershoot easing
jQuery.each( fxAttrs.concat.apply( [], fxAttrs ), function( i, prop ) {
jQuery.fx.step[ prop ] = function( fx ) {
jQuery.style( fx.elem, prop, Math.max(0, fx.now) + fx.unit );
};

View File

@ -263,6 +263,15 @@ test("animate negative height", function() {
});
});
test("animate negative padding", function() {
expect(1);
stop();
jQuery("#foo").animate({ paddingBottom: -100 }, 100, function() {
equal( jQuery(this).css("paddingBottom"), "0px", "Verify paddingBottom." );
start();
});
});
test("animate block as inline width/height", function() {
expect(3);