parent
9261e7ee13
commit
044d47a504
97
src/fx/fx.js
97
src/fx/fx.js
|
@ -363,34 +363,6 @@ jQuery.fn.extend({
|
||||||
});
|
});
|
||||||
|
|
||||||
jQuery.extend({
|
jQuery.extend({
|
||||||
|
|
||||||
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
|
|
||||||
var a = e.style[p];
|
|
||||||
|
|
||||||
// Figure out the size of the height right now
|
|
||||||
var o = jQuery.curCSS(e,p,1);
|
|
||||||
|
|
||||||
if ( p == "height" && e.scrollHeight != o ||
|
|
||||||
p == "width" && e.scrollWidth != o ) return;
|
|
||||||
|
|
||||||
// Set the height to auto
|
|
||||||
e.style[p] = e.currentStyle ? "" : "auto";
|
|
||||||
|
|
||||||
// See what the size of "auto" is
|
|
||||||
var n = jQuery.curCSS(e,p,1);
|
|
||||||
|
|
||||||
// Revert back to the original size
|
|
||||||
if ( o != n && n != "auto" ) {
|
|
||||||
e.style[p] = a;
|
|
||||||
e.notAuto = true;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
speed: function(s,o) {
|
speed: function(s,o) {
|
||||||
o = o || {};
|
o = o || {};
|
||||||
|
@ -435,64 +407,66 @@ jQuery.extend({
|
||||||
*/
|
*/
|
||||||
|
|
||||||
fx: function( elem, options, prop ){
|
fx: function( elem, options, prop ){
|
||||||
|
|
||||||
var z = this;
|
var z = this;
|
||||||
|
|
||||||
// The users options
|
// The users options
|
||||||
z.o = {
|
z.o = {
|
||||||
duration: options.duration || 400,
|
duration: options.duration || 400,
|
||||||
complete: options.complete,
|
complete: options.complete,
|
||||||
step: options.step
|
step: options.step
|
||||||
};
|
};
|
||||||
|
|
||||||
// The element
|
// The element
|
||||||
z.el = elem;
|
z.el = elem;
|
||||||
|
|
||||||
// The styles
|
// The styles
|
||||||
var y = z.el.style;
|
var y = z.el.style;
|
||||||
|
|
||||||
// Simple function for setting a style value
|
// Simple function for setting a style value
|
||||||
z.a = function(){
|
z.a = function(){
|
||||||
if ( options.step )
|
if ( options.step )
|
||||||
options.step.apply( elem, [ z.now ] );
|
options.step.apply( elem, [ z.now ] );
|
||||||
|
|
||||||
if ( prop == "opacity" )
|
if ( prop == "opacity" )
|
||||||
jQuery.attr(y, "opacity", z.now); // Let attr handle opacity
|
jQuery.attr(y, "opacity", z.now); // Let attr handle opacity
|
||||||
else if ( parseInt(z.now) ) // My hate for IE will never die
|
else if ( parseInt(z.now) ) // My hate for IE will never die
|
||||||
y[prop] = parseInt(z.now) + "px";
|
y[prop] = parseInt(z.now) + "px";
|
||||||
|
|
||||||
y.display = "block";
|
y.display = "block";
|
||||||
};
|
};
|
||||||
|
|
||||||
// Figure out the maximum number to run to
|
// Figure out the maximum number to run to
|
||||||
z.max = function(){
|
z.max = function(){
|
||||||
return parseFloat( jQuery.css(z.el,prop) );
|
return parseFloat( jQuery.css(z.el,prop) );
|
||||||
};
|
};
|
||||||
|
|
||||||
// Get the current size
|
// Get the current size
|
||||||
z.cur = function(){
|
z.cur = function(){
|
||||||
var r = parseFloat( jQuery.curCSS(z.el, prop) );
|
var r = parseFloat( jQuery.curCSS(z.el, prop) );
|
||||||
return r && r > -10000 ? r : z.max();
|
return r && r > -10000 ? r : z.max();
|
||||||
};
|
};
|
||||||
|
|
||||||
// Start an animation from one number to another
|
// Start an animation from one number to another
|
||||||
z.custom = function(from,to){
|
z.custom = function(from,to){
|
||||||
z.startTime = (new Date()).getTime();
|
z.startTime = (new Date()).getTime();
|
||||||
z.now = from;
|
z.now = from;
|
||||||
z.a();
|
z.a();
|
||||||
|
|
||||||
z.timer = setInterval(function(){
|
z.timer = setInterval(function(){
|
||||||
z.step(from, to);
|
z.step(from, to);
|
||||||
}, 13);
|
}, 13);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Simple 'show' function
|
// Simple 'show' function
|
||||||
z.show = function(){
|
z.show = function(){
|
||||||
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();
|
||||||
|
|
||||||
|
z.o.show = true;
|
||||||
|
|
||||||
// Begin the animation
|
// Begin the animation
|
||||||
z.custom(0, z.el.orig[prop]);
|
z.custom(0, z.el.orig[prop]);
|
||||||
|
|
||||||
|
@ -500,7 +474,7 @@ jQuery.extend({
|
||||||
if ( prop != "opacity" )
|
if ( prop != "opacity" )
|
||||||
y[prop] = "1px";
|
y[prop] = "1px";
|
||||||
};
|
};
|
||||||
|
|
||||||
// Simple 'hide' function
|
// Simple 'hide' function
|
||||||
z.hide = function(){
|
z.hide = function(){
|
||||||
if ( !z.el.orig ) z.el.orig = {};
|
if ( !z.el.orig ) z.el.orig = {};
|
||||||
|
@ -513,18 +487,14 @@ jQuery.extend({
|
||||||
// Begin the animation
|
// Begin the animation
|
||||||
z.custom(z.el.orig[prop], 0);
|
z.custom(z.el.orig[prop], 0);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Remember the overflow of the element
|
|
||||||
if ( !z.el.oldOverflow )
|
|
||||||
z.el.oldOverflow = jQuery.css( z.el, "overflow" );
|
|
||||||
|
|
||||||
// Make sure that nothing sneaks out
|
// Make sure that nothing sneaks out
|
||||||
y.overflow = "hidden";
|
y.overflow = "hidden";
|
||||||
|
|
||||||
// Each step of an animation
|
// Each step of an animation
|
||||||
z.step = function(firstNum, lastNum){
|
z.step = function(firstNum, lastNum){
|
||||||
var t = (new Date()).getTime();
|
var t = (new Date()).getTime();
|
||||||
|
|
||||||
if (t > z.o.duration + z.startTime) {
|
if (t > z.o.duration + z.startTime) {
|
||||||
// Stop the timer
|
// Stop the timer
|
||||||
clearInterval(z.timer);
|
clearInterval(z.timer);
|
||||||
|
@ -534,33 +504,30 @@ jQuery.extend({
|
||||||
z.a();
|
z.a();
|
||||||
|
|
||||||
z.el.curAnim[ prop ] = true;
|
z.el.curAnim[ prop ] = true;
|
||||||
|
|
||||||
var done = true;
|
var done = true;
|
||||||
for ( var i in z.el.curAnim )
|
for ( var i in z.el.curAnim )
|
||||||
if ( z.el.curAnim[i] !== true )
|
if ( z.el.curAnim[i] !== true )
|
||||||
done = false;
|
done = false;
|
||||||
|
|
||||||
if ( done ) {
|
if ( done ) {
|
||||||
// Reset the overflow
|
// Reset the overflow
|
||||||
y.overflow = z.el.oldOverflow;
|
y.overflow = '';
|
||||||
|
|
||||||
// Hide the element if the "hide" operation was done
|
// Hide the element if the "hide" operation was done
|
||||||
if ( z.o.hide )
|
if ( z.o.hide )
|
||||||
y.display = 'none';
|
y.display = 'none';
|
||||||
|
// Otherwise reset the display property
|
||||||
// Reset the property, if the item has been hidden
|
else if ( z.o.show )
|
||||||
if ( z.o.hide ) {
|
y.display = '';
|
||||||
for ( var p in z.el.curAnim ) {
|
|
||||||
|
// Reset the properties, if the item has been hidden or shown
|
||||||
|
if ( z.o.hide || z.o.show )
|
||||||
|
for ( var p in z.el.curAnim )
|
||||||
if (p == "opacity")
|
if (p == "opacity")
|
||||||
jQuery.attr(y, p, z.el.orig[p]);
|
jQuery.attr(y, p, z.el.orig[p]);
|
||||||
else
|
else
|
||||||
y[ p ] = z.el.orig[p] + "px";
|
y[p] = '';
|
||||||
|
|
||||||
// set its height and/or width to auto
|
|
||||||
if ( p == 'height' || p == 'width' )
|
|
||||||
jQuery.setAuto( z.el, p );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// If a callback was provided, execute it
|
// If a callback was provided, execute it
|
||||||
|
@ -571,7 +538,7 @@ jQuery.extend({
|
||||||
// Figure out where in the animation we are and set the number
|
// Figure out where in the animation we are and set the number
|
||||||
var p = (t - this.startTime) / z.o.duration;
|
var p = (t - this.startTime) / z.o.duration;
|
||||||
z.now = ((-Math.cos(p*Math.PI)/2) + 0.5) * (lastNum-firstNum) + firstNum;
|
z.now = ((-Math.cos(p*Math.PI)/2) + 0.5) * (lastNum-firstNum) + firstNum;
|
||||||
|
|
||||||
// Perform the next step of the animation
|
// Perform the next step of the animation
|
||||||
z.a();
|
z.a();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue