effects.*: More Style Guidance

This commit is contained in:
gnarf 2011-03-06 15:24:24 -06:00
parent 61cf834081
commit bcb8f7ed9a
3 changed files with 61 additions and 60 deletions

View File

@ -16,11 +16,11 @@ $.effects.blind = function(o) {
return this.queue(function() {
// Create element
var el = $(this),
var el = $( this ),
props = ['position','top','bottom','left','right'],
mode = $.effects.setMode( el, o.mode || 'hide' ),
direction = o.direction || 'vertical',
ref = (direction == 'vertical') ? 'height' : 'width',
ref = ( direction == 'vertical' ) ? 'height' : 'width',
animation = {},
wrapper, distance;

View File

@ -12,64 +12,63 @@
*/
(function( $, undefined ) {
$.effects.explode = function(o) {
$.effects.explode = function( o ) {
return this.queue(function() {
return this.queue( function() {
var rows = o.pieces ? Math.round(Math.sqrt(o.pieces)) : 3;
var cells = o.pieces ? Math.round(Math.sqrt(o.pieces)) : 3;
var rows = o.pieces ? Math.round(Math.sqrt(o.pieces)) : 3,
cells = rows,
el = $( this ).show().css( 'visibility', 'hidden' ),
mode = $.effects.setMode( el, o.mode || 'hide' ),
offset = el.offset(),
width = el.outerWidth( true ),
height = el.outerHeight( true );
o.mode = o.mode == 'toggle' ? ($(this).is(':visible') ? 'hide' : 'show') : o.mode;
var el = $(this).show().css('visibility', 'hidden');
var offset = el.offset();
//Substract the margins - not fixing the problem yet.
offset.top -= parseInt( el.css( "marginTop" ), 10 ) || 0;
offset.left -= parseInt( el.css( "marginLeft" ), 10 ) || 0;
//Substract the margins - not fixing the problem yet.
offset.top -= parseInt(el.css("marginTop"),10) || 0;
offset.left -= parseInt(el.css("marginLeft"),10) || 0;
var width = el.outerWidth(true);
var height = el.outerHeight(true);
for(var i=0;i<rows;i++) { // =
for(var j=0;j<cells;j++) { // ||
el
.clone()
.appendTo('body')
.wrap('<div></div>')
.css({
position: 'absolute',
visibility: 'visible',
left: -j*(width/cells),
top: -i*(height/rows)
})
.parent()
.addClass('ui-effects-explode')
.css({
position: 'absolute',
overflow: 'hidden',
width: width/cells,
height: height/rows,
left: offset.left + j*(width/cells) + (o.mode == 'show' ? (j-Math.floor(cells/2))*(width/cells) : 0),
top: offset.top + i*(height/rows) + (o.mode == 'show' ? (i-Math.floor(rows/2))*(height/rows) : 0),
opacity: o.mode == 'show' ? 0 : 1
}).animate({
left: offset.left + j*(width/cells) + (o.mode == 'show' ? 0 : (j-Math.floor(cells/2))*(width/cells)),
top: offset.top + i*(height/rows) + (o.mode == 'show' ? 0 : (i-Math.floor(rows/2))*(height/rows)),
opacity: o.mode == 'show' ? 1 : 0
}, o.duration || 500);
for( var i = 0; i < rows ; i++ ) { // =
for( var j = 0; j < cells ; j++ ) { // ||
el
.clone()
.appendTo('body')
.wrap('<div></div>')
.css({
position: 'absolute',
visibility: 'visible',
left: -j*(width/cells),
top: -i*(height/rows)
})
.parent()
.addClass('ui-effects-explode')
.css({
position: 'absolute',
overflow: 'hidden',
width: width/cells,
height: height/rows,
left: offset.left + j*(width/cells) + (o.mode == 'show' ? (j-Math.floor(cells/2))*(width/cells) : 0),
top: offset.top + i*(height/rows) + (o.mode == 'show' ? (i-Math.floor(rows/2))*(height/rows) : 0),
opacity: mode == 'show' ? 0 : 1
}).animate({
left: offset.left + j*(width/cells) + (o.mode == 'show' ? 0 : (j-Math.floor(cells/2))*(width/cells)),
top: offset.top + i*(height/rows) + (o.mode == 'show' ? 0 : (i-Math.floor(rows/2))*(height/rows)),
opacity: mode == 'show' ? 1 : 0
}, o.duration || 500);
}
}
}
// Set a timeout, to call the callback approx. when the other animations have finished
setTimeout(function() {
// Set a timeout, to call the callback approx. when the other animations have finished
setTimeout(function() {
o.mode == 'show' ? el.css({ visibility: 'visible' }) : el.css({ visibility: 'visible' }).hide();
if(o.complete) o.complete.apply(el[0]); // Callback
el.dequeue();
el.css({ visibility: 'visible' });
mode != 'show' && el.hide();
$.isFunction( o.complete ) && o.complete.apply( el[ 0 ] );
el.dequeue();
$('div.ui-effects-explode').remove();
}, o.duration || 500);
// Note: This is removing all exploding peices from the dom, rather than the ones for this animation only... Ticket# 6022
$('div.ui-effects-explode').remove();
}, o.duration || 500);
});

View File

@ -12,18 +12,20 @@
*/
(function( $, undefined ) {
$.effects.fade = function(o) {
return this.queue(function() {
var elem = $(this),
mode = $.effects.setMode(elem, o.options.mode || 'hide');
$.effects.fade = function( o ) {
return this.queue( function() {
var el = $( this ),
mode = $.effects.setMode( el, o.mode || 'hide' );
elem.animate({ opacity: mode }, {
el.animate({
opacity: mode
}, {
queue: false,
duration: o.duration,
easing: o.options.easing,
easing: o.easing,
complete: function() {
(o.callback && o.callback.apply(this, arguments));
elem.dequeue();
jQuery.isFunction( o.complete ) && o.complete.apply( this, arguments );
el.dequeue();
}
});
});