forked from xlune/jQuery-vGrid-Plugin
-
Notifications
You must be signed in to change notification settings - Fork 0
/
jquery.vgrid.min.js
21 lines (20 loc) · 5.42 KB
/
jquery.vgrid.min.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
* jQuery VGrid v0.1.8 - variable grid layout plugin
*
* Terms of Use - jQuery VGrid
* under the MIT (http://www.opensource.org/licenses/mit-license.php) License.
*
* Copyright 2009-2012 xlune.com All rights reserved.
* (http://blog.xlune.com/2009/09/jqueryvgrid.html)
*/
(function(g){function i(a){var b=a.data("_vgchild"),e=[[0,a.width(),0]],h=0,d,c,j;b.each(function(){d=g(this);if("none"==d.css("display"))return!0;var a=d.width(),b=d.height(),a=a+(Number(d.css("margin-left").replace("px",""))+Number(d.css("padding-left").replace("px",""))+Number(d.get(0).style.borderLeftWidth.replace("px",""))+Number(d.css("margin-right").replace("px",""))+Number(d.css("padding-right").replace("px",""))+Number(d.get(0).style.borderRightWidth.replace("px",""))),b=b+(Number(d.css("margin-top").replace("px",
""))+Number(d.css("padding-top").replace("px",""))+Number(d.get(0).style.borderTopWidth.replace("px",""))+Number(d.css("margin-bottom").replace("px",""))+Number(d.css("padding-bottom").replace("px",""))+Number(d.get(0).style.borderBottomWidth.replace("px","")));c=[a,b];a:{for(var a=c[0],b=e.concat().sort(q),f=b[b.length-1][2],k=0,o=b.length;k<o&&!(b[k][2]>=f);k++)if(b[k][1]-b[k][0]>=a){j=[b[k][0],b[k][2]];break a}j=[0,f]}b=j;a=e.concat().sort(q);b=[b[0],b[0]+c[0],b[1]+c[1]];f=0;for(k=a.length;f<k;f++)if(b[0]<=
a[f][0]&&a[f][1]<=b[1])delete a[f];else{var o=a,i=f,l=a[f],n=b;if(l[0]>=n[0]&&l[0]<n[1]||l[1]>=n[0]&&l[1]<n[1])l[0]>=n[0]&&l[0]<n[1]?l[0]=n[1]:l[1]=n[0];o[i]=l}a=a.concat([b]).sort(s);b=[];f=0;for(k=a.length;f<k;f++)a[f]&&(0<b.length&&b[b.length-1][1]==a[f][0]&&b[b.length-1][2]==a[f][2]?b[b.length-1][1]=a[f][1]:b.push(a[f]));e=b;h=Math.max(h,j[1]+c[1]);d.data("_vgleft",j[0]);d.data("_vgtop",j[1])});a.data("_vgwrapheight",h);t(a)}function q(a,b){return!a||!b?0:a[2]==b[2]&&a[0]>b[0]||a[2]>b[2]?1:-1}
function s(a,b){return!a||!b?0:a[0]>b[0]?1:-1}function t(a){var b=a.data("_vgchild").length*(a.data("_vgopt").delay||0)+a.data("_vgopt").time||500;a.stop();a.height()<a.data("_vgwrapheight")?g.browser.msie?a.height(a.data("_vgwrapheight")):a.animate({height:a.data("_vgwrapheight")+"px"},a.data("_vgopt").time||500,"easeOutQuart"):(clearTimeout(a.data("_vgwraptimeout")),a.data("_vgwraptimeout",setTimeout(function(){g.browser.msie?a.height(a.data("_vgwrapheight")):a.animate({height:a.data("_vgwrapheight")+
"px"},a.data("_vgopt").time||500,"easeOutQuart")},b)))}function u(a){var b;a.each(function(){b=g(this);b.css("left",b.data("_vgleft")+"px");b.css("top",b.data("_vgtop")+"px")})}function p(a,b,e,h){var d=g(a).parent(),c=!1,j=a.length,i,m,f;for(i=0;i<j;i++)m=g(a[i]),f=m.position(),f.left!=m.data("_vgleft")&&f.top!=m.data("_vgtop")&&(c=!0);if(c){if("function"==typeof d.data("_vgopt").onStart)d.data("_vgopt").onStart();a.each(function(c){var f=g(this),j={duration:e,easing:b};a.size()-1==c&&(j.complete=
d.data("_vgopt").onFinish||null);clearTimeout(f.data("_vgtimeout"));f.data("_vgtimeout",setTimeout(function(){f.animate({left:f.data("_vgleft")+"px",top:f.data("_vgtop")+"px"},j)},c*h))})}}function m(a){a.each(function(){var a=g(this);clearTimeout(a.data("_vgtimeout"));a.data("_vgtimeout",setTimeout(function(){i(a);p(a.data("_vgchild"),a.data("_vgopt").easeing||"linear",a.data("_vgopt").time||500,a.data("_vgopt").delay||0)},300))})}function v(a,b){var e=g("<span />").text(" ").attr("id","_vgridspan").hide().appendTo("body");
e.data("size",e.css("font-size"));e.data("timer",setInterval(function(){e.css("font-size")!=e.data("size")&&(e.data("size",e.css("font-size")),b(a))},500))}function r(a,b){a.data("vgrid-image-event-added")||(a.data("vgrid-image-event-added",1),a.bind("vgrid-added",function(){a.find("img").each(function(){var d=g(this);d.data("vgrid-image-handler")||(d.data("vgrid-image-handler",1),d.bind("load",function(){b(a)}))})}));a.trigger("vgrid-added");var e=a.append,h=a.prepend;a.append=function(){e.apply(a,
arguments);a.trigger("vgrid-added")};a.prepend=function(){h.apply(a,arguments);a.trigger("vgrid-added")}}g.fn.extend({vgrid:function(a){var b=g(this),e=a||{};b.each(function(){var a=g(this);a.data("_vgopt",e);a.data("_vgchild",a.find("> *"));a.data("_vgdefchild",a.data("_vgchild"));a.css({position:"relative",width:"auto"});a.data("_vgchild").css("position","absolute");i(a);u(a.data("_vgchild"));if(a.data("_vgopt").fadeIn){var b="object"==typeof a.data("_vgopt").fadeIn?a.data("_vgopt").fadeIn:{time:a.data("_vgopt").fadeIn};
a.data("_vgchild").each(function(a){var e=g(this);if("none"==e.css("display"))return!0;e.stop().fadeTo(0,0);setTimeout(function(){e.stop().fadeTo(b.time||250,1)},a*(b.delay||0))})}g(window).resize(function(){m(a)});e.useLoadImageEvent&&r(a,m);e.useFontSizeListener&&v(a,m)});return b},vgrefresh:function(a,b,e,h){var d=g(this);d.each(function(){var c=g(this),d=c.data("_vgopt")||{};c.data("_vgchild")&&(c.data("_vgchild",c.find("> *")),c.data("_vgchild").css("position","absolute"),i(c),b="number"==typeof b?
b:c.data("_vgopt").time||500,e="number"==typeof e?e:c.data("_vgopt").delay||0,p(c.data("_vgchild"),a||c.data("_vgopt").easeing||"linear",b,e),"function"==typeof h&&setTimeout(h,c.data("_vgchild").length*e+b));d.useLoadImageEvent&&r(c,m)});return d},vgsort:function(a,b,e,h){var d=g(this);d.each(function(){var c=g(this);c.data("_vgchild")&&(c.data("_vgchild",c.data("_vgchild").sort(a)),c.data("_vgchild").each(function(){g(this).appendTo(c)}),i(c),p(c.data("_vgchild"),b||c.data("_vgopt").easeing||"linear",
"number"==typeof e?e:c.data("_vgopt").time||500,"number"==typeof h?h:c.data("_vgopt").delay||0))});return d}})})(jQuery);