Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Fix #13183: Wrong animation initial value calc. Close gh-1136.
  • Loading branch information
mikesherov authored and dmethvin committed Jan 16, 2013
1 parent 79feac9 commit 65df32d
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 10 deletions.
2 changes: 1 addition & 1 deletion src/css.js
Expand Up @@ -265,7 +265,7 @@ jQuery.extend({
}

// Return, converting to number if forced or a qualifier was provided and val looks numeric
if ( extra ) {
if ( extra === "" || extra ) {
num = parseFloat( val );
return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
}
Expand Down
4 changes: 2 additions & 2 deletions src/effects.js
Expand Up @@ -427,11 +427,11 @@ Tween.propHooks = {
return tween.elem[ tween.prop ];
}

// passing a non empty string as a 3rd parameter to .css will automatically
// passing an empty string as a 3rd parameter to .css will automatically
// attempt a parseFloat and fallback to a string if the parse fails
// so, simple values such as "10px" are parsed to Float.
// complex values such as "rotate(1rad)" are returned as is.
result = jQuery.css( tween.elem, tween.prop, "auto" );
result = jQuery.css( tween.elem, tween.prop, "" );
// Empty strings, null, undefined and "auto" are converted to 0.
return !result || result === "auto" ? 0 : result;
},
Expand Down
31 changes: 24 additions & 7 deletions test/unit/effects.js
Expand Up @@ -283,14 +283,31 @@ test("animate native inline width/height", function() {
}
});

test("animate block width/height", function() {
expect(3);
test( "animate block width/height", function() {
expect( 3 );
stop();
jQuery("#foo").css({ display: "block", width: 20, height: 20 }).animate({ width: 42, height: 42 }, 100, function() {
equal( jQuery(this).css("display"), "block", "inline-block was not set on block element when animating width/height" );
equal( this.offsetWidth, 42, "width was animated" );
equal( this.offsetHeight, 42, "height was animated" );
start();

jQuery("<div>").appendTo("#qunit-fixture").css({
display: "block",
width: 20,
height: 20,
paddingLeft: 60
}).animate({
width: 42,
height: 42
}, {
duration: 100,
step: function() {
if ( jQuery( this ).width() > 42 ) {
ok( false, "width was incorrectly augmented during animation" );
}
},
complete: function() {
equal( jQuery( this ).css("display"), "block", "inline-block was not set on block element when animating width/height" );
equal( jQuery( this ).width(), 42, "width was animated" );
equal( jQuery( this ).height(), 42, "height was animated" );
start();
}
});
});

Expand Down

0 comments on commit 65df32d

Please sign in to comment.