Style edits, code reductions, and optimizations for the effects module

This commit is contained in:
timmywil 2011-05-28 21:39:34 -04:00
parent d66c3b6d84
commit 51aa9c5f32
2 changed files with 55 additions and 54 deletions

27
src/effects.js vendored
View file

@ -140,8 +140,7 @@ jQuery.fn.extend({
var opt = jQuery.extend( {}, optall ), var opt = jQuery.extend( {}, optall ),
isElement = this.nodeType === 1, isElement = this.nodeType === 1,
hidden = isElement && jQuery(this).is(":hidden"), hidden = isElement && jQuery(this).is(":hidden"),
name, val, p, name, val, p, e,
display, e,
parts, start, end, unit; parts, start, end, unit;
// will store per property easing and be used to determine when an animation is complete // will store per property easing and be used to determine when an animation is complete
@ -182,25 +181,18 @@ jQuery.fn.extend({
// animated // animated
if ( jQuery.css( this, "display" ) === "inline" && if ( jQuery.css( this, "display" ) === "inline" &&
jQuery.css( this, "float" ) === "none" ) { jQuery.css( this, "float" ) === "none" ) {
if ( !jQuery.support.inlineBlockNeedsLayout ) {
this.style.display = "inline-block";
} else {
display = defaultDisplay( this.nodeName );
// inline-level elements accept inline-block; // inline-level elements accept inline-block;
// block-level elements need to be inline with layout // block-level elements need to be inline with layout
if ( display === "inline" ) { if ( !jQuery.support.inlineBlockNeedsLayout || defaultDisplay( this.nodeName ) === "inline" ) {
this.style.display = "inline-block"; this.style.display = "inline-block";
} else { } else {
this.style.display = "inline";
this.style.zoom = 1; this.style.zoom = 1;
} }
} }
} }
} }
}
if ( opt.overflow != null ) { if ( opt.overflow != null ) {
this.style.overflow = "hidden"; this.style.overflow = "hidden";
@ -396,11 +388,10 @@ jQuery.fx.prototype = {
raf; raf;
this.startTime = fxNow || createFxNow(); this.startTime = fxNow || createFxNow();
this.start = from;
this.end = to; this.end = to;
this.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? "" : "px" ); this.now = this.start = from;
this.now = this.start;
this.pos = this.state = 0; this.pos = this.state = 0;
this.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? "" : "px" );
function t( gotoEnd ) { function t( gotoEnd ) {
return self.step( gotoEnd ); return self.step( gotoEnd );
@ -553,7 +544,7 @@ jQuery.extend( jQuery.fx, {
_default: function( fx ) { _default: function( fx ) {
if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) { if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {
fx.elem.style[ fx.prop ] = (fx.prop === "width" || fx.prop === "height" ? Math.max(0, fx.now) : fx.now) + fx.unit; fx.elem.style[ fx.prop ] = fx.now + fx.unit;
} else { } else {
fx.elem[ fx.prop ] = fx.now; fx.elem[ fx.prop ] = fx.now;
} }
@ -561,6 +552,14 @@ jQuery.extend( jQuery.fx, {
} }
}); });
// Adds width/height step functions
// Do not set anything below 0
jQuery.each([ "width", "height" ], function( i, prop ) {
jQuery.fx.step[ prop ] = function( fx ) {
jQuery.style( fx.elem, prop, Math.max(0, fx.now) );
};
});
if ( jQuery.expr && jQuery.expr.filters ) { if ( jQuery.expr && jQuery.expr.filters ) {
jQuery.expr.filters.animated = function( elem ) { jQuery.expr.filters.animated = function( elem ) {
return jQuery.grep(jQuery.timers, function( fn ) { return jQuery.grep(jQuery.timers, function( fn ) {

View file

@ -4,15 +4,15 @@ function handleQueueMarkDefer( elem, type, src ) {
var deferDataKey = type + "defer", var deferDataKey = type + "defer",
queueDataKey = type + "queue", queueDataKey = type + "queue",
markDataKey = type + "mark", markDataKey = type + "mark",
defer = jQuery.data( elem, deferDataKey, undefined, true ); defer = jQuery._data( elem, deferDataKey );
if ( defer && if ( defer &&
( src === "queue" || !jQuery.data( elem, queueDataKey, undefined, true ) ) && ( src === "queue" || !jQuery._data(elem, queueDataKey) ) &&
( src === "mark" || !jQuery.data( elem, markDataKey, undefined, true ) ) ) { ( src === "mark" || !jQuery._data(elem, markDataKey) ) ) {
// Give room for hard-coded callbacks to fire first // Give room for hard-coded callbacks to fire first
// and eventually mark/queue something else on the element // and eventually mark/queue something else on the element
setTimeout( function() { setTimeout( function() {
if ( !jQuery.data( elem, queueDataKey, undefined, true ) && if ( !jQuery._data( elem, queueDataKey ) &&
!jQuery.data( elem, markDataKey, undefined, true ) ) { !jQuery._data( elem, markDataKey ) ) {
jQuery.removeData( elem, deferDataKey, true ); jQuery.removeData( elem, deferDataKey, true );
defer.resolve(); defer.resolve();
} }
@ -25,7 +25,7 @@ jQuery.extend({
_mark: function( elem, type ) { _mark: function( elem, type ) {
if ( elem ) { if ( elem ) {
type = (type || "fx") + "mark"; type = (type || "fx") + "mark";
jQuery.data( elem, type, (jQuery.data(elem,type,undefined,true) || 0) + 1, true ); jQuery._data( elem, type, (jQuery._data( elem, type ) || 0) + 1 );
} }
}, },
@ -38,9 +38,9 @@ jQuery.extend({
if ( elem ) { if ( elem ) {
type = type || "fx"; type = type || "fx";
var key = type + "mark", var key = type + "mark",
count = force ? 0 : ( (jQuery.data( elem, key, undefined, true) || 1 ) - 1 ); count = force ? 0 : ( (jQuery._data( elem, key ) || 1) - 1 );
if ( count ) { if ( count ) {
jQuery.data( elem, key, count, true ); jQuery._data( elem, key, count );
} else { } else {
jQuery.removeData( elem, key, true ); jQuery.removeData( elem, key, true );
handleQueueMarkDefer( elem, type, "mark" ); handleQueueMarkDefer( elem, type, "mark" );
@ -49,13 +49,15 @@ jQuery.extend({
}, },
queue: function( elem, type, data ) { queue: function( elem, type, data ) {
var q;
if ( elem ) { if ( elem ) {
type = (type || "fx") + "queue"; type = (type || "fx") + "queue";
var q = jQuery.data( elem, type, undefined, true ); q = jQuery._data( elem, type );
// Speed up dequeue by getting out quickly if this is just a lookup // Speed up dequeue by getting out quickly if this is just a lookup
if ( data ) { if ( data ) {
if ( !q || jQuery.isArray(data) ) { if ( !q || jQuery.isArray(data) ) {
q = jQuery.data( elem, type, jQuery.makeArray(data), true ); q = jQuery._data( elem, type, jQuery.makeArray(data) );
} else { } else {
q.push( data ); q.push( data );
} }