source: trunk/themes/default/js/ui/jquery.ui.effect-explode.js @ 28780

Last change on this file since 28780 was 28780, checked in by rvelices, 10 years ago

upgrade jquery ui from 1.10.1 to 1.10.4

File size: 2.3 KB
Line 
1/*!
2 * jQuery UI Effects Explode 1.10.4
3 * http://jqueryui.com
4 *
5 * Copyright 2014 jQuery Foundation and other contributors
6 * Released under the MIT license.
7 * http://jquery.org/license
8 *
9 * http://api.jqueryui.com/explode-effect/
10 *
11 * Depends:
12 *      jquery.ui.effect.js
13 */
14(function( $, undefined ) {
15
16$.effects.effect.explode = function( o, done ) {
17
18        var rows = o.pieces ? Math.round( Math.sqrt( o.pieces ) ) : 3,
19                cells = rows,
20                el = $( this ),
21                mode = $.effects.setMode( el, o.mode || "hide" ),
22                show = mode === "show",
23
24                // show and then visibility:hidden the element before calculating offset
25                offset = el.show().css( "visibility", "hidden" ).offset(),
26
27                // width and height of a piece
28                width = Math.ceil( el.outerWidth() / cells ),
29                height = Math.ceil( el.outerHeight() / rows ),
30                pieces = [],
31
32                // loop
33                i, j, left, top, mx, my;
34
35        // children animate complete:
36        function childComplete() {
37                pieces.push( this );
38                if ( pieces.length === rows * cells ) {
39                        animComplete();
40                }
41        }
42
43        // clone the element for each row and cell.
44        for( i = 0; i < rows ; i++ ) { // ===>
45                top = offset.top + i * height;
46                my = i - ( rows - 1 ) / 2 ;
47
48                for( j = 0; j < cells ; j++ ) { // |||
49                        left = offset.left + j * width;
50                        mx = j - ( cells - 1 ) / 2 ;
51
52                        // Create a clone of the now hidden main element that will be absolute positioned
53                        // within a wrapper div off the -left and -top equal to size of our pieces
54                        el
55                                .clone()
56                                .appendTo( "body" )
57                                .wrap( "<div></div>" )
58                                .css({
59                                        position: "absolute",
60                                        visibility: "visible",
61                                        left: -j * width,
62                                        top: -i * height
63                                })
64
65                        // select the wrapper - make it overflow: hidden and absolute positioned based on
66                        // where the original was located +left and +top equal to the size of pieces
67                                .parent()
68                                .addClass( "ui-effects-explode" )
69                                .css({
70                                        position: "absolute",
71                                        overflow: "hidden",
72                                        width: width,
73                                        height: height,
74                                        left: left + ( show ? mx * width : 0 ),
75                                        top: top + ( show ? my * height : 0 ),
76                                        opacity: show ? 0 : 1
77                                }).animate({
78                                        left: left + ( show ? 0 : mx * width ),
79                                        top: top + ( show ? 0 : my * height ),
80                                        opacity: show ? 1 : 0
81                                }, o.duration || 500, o.easing, childComplete );
82                }
83        }
84
85        function animComplete() {
86                el.css({
87                        visibility: "visible"
88                });
89                $( pieces ).remove();
90                if ( !show ) {
91                        el.hide();
92                }
93                done();
94        }
95};
96
97})(jQuery);
Note: See TracBrowser for help on using the repository browser.