Fixed width/height animations don't lapse back to auto. There's no longer a flicker for fixed sized items. The overflow for items is no longer tampered with, if it doesn't have to be. .cur() is used for all animations in place of .max(), with much better results.
This commit is contained in:
parent
0a4dc3f8f2
commit
aa5c4d8828
30
fx/fx.js
30
fx/fx.js
|
@ -87,7 +87,7 @@ jQuery.fn.extend({
|
||||||
if ( prop[p].constructor == Number )
|
if ( prop[p].constructor == Number )
|
||||||
e.custom( e.cur(), prop[p] );
|
e.custom( e.cur(), prop[p] );
|
||||||
else
|
else
|
||||||
e[ prop[p] ]();
|
e[ prop[p] ]( prop );
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -121,12 +121,20 @@ jQuery.fn.extend({
|
||||||
jQuery.extend({
|
jQuery.extend({
|
||||||
|
|
||||||
setAuto: function(e,p) {
|
setAuto: function(e,p) {
|
||||||
|
if ( e.notAuto ) return;
|
||||||
|
|
||||||
|
if ( p == "height" && e.scrollHeight != parseInt(jQuery.curCSS(e,p)) ) return;
|
||||||
|
if ( p == "width" && e.scrollWidth != parseInt(jQuery.curCSS(e,p)) ) return;
|
||||||
|
|
||||||
// Remember the original height
|
// Remember the original height
|
||||||
var a = e.style[p];
|
var a = e.style[p];
|
||||||
|
|
||||||
// Figure out the size of the height right now
|
// Figure out the size of the height right now
|
||||||
var o = jQuery.curCSS(e,p,1);
|
var o = jQuery.curCSS(e,p,1);
|
||||||
|
|
||||||
|
if ( p == "height" && e.scrollHeight != o ||
|
||||||
|
p == "width" && e.scrollWidth != o ) return;
|
||||||
|
|
||||||
// Set the height to auto
|
// Set the height to auto
|
||||||
e.style[p] = e.currentStyle ? "" : "auto";
|
e.style[p] = e.currentStyle ? "" : "auto";
|
||||||
|
|
||||||
|
@ -134,7 +142,10 @@ jQuery.extend({
|
||||||
var n = jQuery.curCSS(e,p,1);
|
var n = jQuery.curCSS(e,p,1);
|
||||||
|
|
||||||
// Revert back to the original size
|
// Revert back to the original size
|
||||||
if ( o != n && n != "auto" ) e.style[p] = a;
|
if ( o != n && n != "auto" ) {
|
||||||
|
e.style[p] = a;
|
||||||
|
e.notAuto = true;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
speed: function(s,o,i) {
|
speed: function(s,o,i) {
|
||||||
|
@ -210,6 +221,7 @@ jQuery.extend({
|
||||||
// My hate for IE will never die
|
// My hate for IE will never die
|
||||||
} else if ( parseInt(z.now) )
|
} else if ( parseInt(z.now) )
|
||||||
y[prop] = parseInt(z.now) + "px";
|
y[prop] = parseInt(z.now) + "px";
|
||||||
|
y.display = "block";
|
||||||
};
|
};
|
||||||
|
|
||||||
// Figure out the maximum number to run to
|
// Figure out the maximum number to run to
|
||||||
|
@ -234,21 +246,17 @@ jQuery.extend({
|
||||||
};
|
};
|
||||||
|
|
||||||
// Simple 'show' function
|
// Simple 'show' function
|
||||||
z.show = function(){
|
z.show = function( p ){
|
||||||
if ( !z.el.orig ) z.el.orig = {};
|
if ( !z.el.orig ) z.el.orig = {};
|
||||||
|
|
||||||
// Remember where we started, so that we can go back to it later
|
// Remember where we started, so that we can go back to it later
|
||||||
z.el.orig[prop] = this.cur();
|
z.el.orig[prop] = this.cur();
|
||||||
|
|
||||||
if ( !y[prop] ) z.o.auto = true;
|
z.custom( 0, z.el.orig[prop] );
|
||||||
|
|
||||||
z.custom(0,z.max());
|
|
||||||
|
|
||||||
// Stupid IE, look what you made me do
|
// Stupid IE, look what you made me do
|
||||||
if ( prop != "opacity" )
|
if ( prop != "opacity" )
|
||||||
y[prop] = "1px";
|
y[prop] = "1px";
|
||||||
|
|
||||||
y.display = "block";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Simple 'hide' function
|
// Simple 'hide' function
|
||||||
|
@ -269,9 +277,11 @@ jQuery.extend({
|
||||||
y.zoom = "1";
|
y.zoom = "1";
|
||||||
|
|
||||||
// Remember the overflow of the element
|
// Remember the overflow of the element
|
||||||
z.oldOverflow = y.overflow;
|
if ( !z.el.oldOverlay )
|
||||||
|
z.el.oldOverflow = jQuery.css( z.el, "overflow" );
|
||||||
|
|
||||||
// Make sure that nothing sneaks out
|
// Make sure that nothing sneaks out
|
||||||
|
if ( z.el.oldOverlay == "visible" )
|
||||||
y.overflow = "hidden";
|
y.overflow = "hidden";
|
||||||
|
|
||||||
// Each step of an animation
|
// Each step of an animation
|
||||||
|
@ -290,7 +300,7 @@ jQuery.extend({
|
||||||
if ( z.o.hide ) y.display = 'none';
|
if ( z.o.hide ) y.display = 'none';
|
||||||
|
|
||||||
// Reset the overflow
|
// Reset the overflow
|
||||||
y.overflow = z.oldOverflow;
|
y.overflow = z.el.oldOverflow;
|
||||||
|
|
||||||
// If a callback was provided, execute it
|
// If a callback was provided, execute it
|
||||||
if( z.o.complete && z.o.complete.constructor == Function )
|
if( z.o.complete && z.o.complete.constructor == Function )
|
||||||
|
|
Loading…
Reference in a new issue