diff --git a/dist/xzoom.min.js b/dist/xzoom.min.js index 56a13e6..f78190b 100644 --- a/dist/xzoom.min.js +++ b/dist/xzoom.min.js @@ -1,8 +1,8 @@ /*!----------------------------------------------------- - * xZoom v1.0.6 + * xZoom v1.0.7 * (c) 2013 by Azat Ahmedov & Elman Guseynov * https://github.com/payalord * https://dribbble.com/elmanvebs * Apache License 2.0 *------------------------------------------------------*/ -;window.requestAnimFrame=(function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,20)}})();function detect_old_ie(){if(/MSIE (\d+\.\d+);/.test(navigator.userAgent)){var a=new Number(RegExp.$1);if(a>=9){return false}else{if(a>=8){return true}else{if(a>=7){return true}else{if(a>=6){return true}else{if(a>=5){return true}}}}}}else{return false}}(function(b){b.fn.xon=b.fn.on||b.fn.bind;b.fn.xoff=b.fn.off||b.fn.bind;function a(aw,aF){this.xzoom=true;var F=this;var N;var aC={};var ac,aj,Z,ai,ab,ah,al,S,aE,y,an;var ax,o,Q,U,T,aa,p=new Array();var G=new Array(),aB=0,z=0;var J,R,l,k;var ap,aA,av,at,P,n,aK,aI,az,ay,X,V,ao,ak=0;var h,ag;var aJ,C=0,A=0,af=0,ad=0,s=0,r=0,ar=0,aq=0,I=0,H=0;var E=detect_old_ie(),B=/MSIE (\d+\.\d+);/.test(navigator.userAgent),Y,W;var L,j="",K,w;var aH,f,m,q,g,i,am,d,t;this.adaptive=function(){if(m==0||q==0){aw.css("width","");aw.css("height","");m=aw.width();q=aw.height()}aG();aH=b(window).width();f=b(window).height();g=aw.width();i=aw.height();var u=false;if(m>aH||q>f){u=true}if(g>m){g=m}if(i>q){i=q}if(u){aw.width("100%")}else{if(m!=0){aw.width(m)}}if(am!="fullscreen"){if(aD()){F.options.position=am}else{F.options.position=F.options.mposition}}if(!F.options.lensReverse){d=F.options.adaptiveReverse&&F.options.position==F.options.mposition}};function au(){var aL=document.documentElement;var v=(window.pageXOffset||aL.scrollLeft)-(aL.clientLeft||0);var u=(window.pageYOffset||aL.scrollTop)-(aL.clientTop||0);return{left:v,top:u}}function aD(){var u=aw.offset();if(F.options.zoomWidth=="auto"){Z=g}else{Z=F.options.zoomWidth}if(F.options.zoomHeight=="auto"){ai=i}else{ai=F.options.zoomHeight}if(F.options.position.substr(0,1)=="#"){aC=b(F.options.position)}else{aC.length=0}if(aC.length!=0){return true}switch(am){case"lens":case"inside":return true;break;case"top":ah=u.top;al=u.left;S=ah-i;aE=al;break;case"left":ah=u.top;al=u.left;S=ah;aE=al-g;break;case"bottom":ah=u.top;al=u.left;S=ah+i;aE=al;break;case"right":default:ah=u.top;al=u.left;S=ah;aE=al+g}if(aE+Z>aH||aE<0){return false}return true}this.xscroll=function(v){v.preventDefault();if(v.xscale){var u=v.pageX||v.originalEvent.pageX;var aM=v.pageY||v.originalEvent.pageY;ak=v.xscale;M(u,aM)}else{var aL=-v.originalEvent.detail||v.originalEvent.wheelDelta||v.xdelta;var u=v.pageX||v.originalEvent.pageX;var aM=v.pageY||v.originalEvent.pageY;if(E){u=Y;aM=W}if(aL>0){aL=-0.05}else{aL=0.05}ak+=aL;M(u,aM)}};function x(){if(F.options.lensShape=="circle"&&F.options.position=="lens"){ap=aA=Math.max(ap,aA);var u=(ap+Math.max(n,P)*2)/2;l.css({"-moz-border-radius":u,"-webkit-border-radius":u,"border-radius":u})}}function D(u,aM,aL,v){if(F.options.position=="lens"){R.css({top:-(aM-ah)*ay+(aA/2),left:-(u-al)*az+(ap/2)});if(F.options.bg){l.css({"background-image":"url("+R.attr("src")+")","background-repeat":"no-repeat","background-position":(-(u-al)*az+(ap/2))+"px "+(-(aM-ah)*ay+(aA/2))+"px"});if(aL&&v){l.css({"background-size":aL+"px "+v+"px"})}}}else{R.css({top:-at*ay,left:-av*az})}}function M(u,aN){if(ak<-1){ak=-1}if(ak>1){ak=1}if(Xac-ap){av=ac-ap}if(at<0){at=0}if(at>aj-aA){at=aj-aA}}}function aG(){if(typeof ax!="undefined"){ax.remove()}if(typeof Q!="undefined"){Q.remove()}if(typeof w!="undefined"){w.remove()}}function O(u,aL){if(F.options.position=="fullscreen"){ac=b(window).width();aj=b(window).height()}else{ac=aw.width();aj=aw.height()}U.css({top:aj/2-U.height()/2,left:ac/2-U.width()/2});if(F.options.rootOutput||F.options.position=="fullscreen"){ab=aw.offset()}else{ab=aw.position()}ab.top=Math.round(ab.top);ab.left=Math.round(ab.left);switch(F.options.position){case"fullscreen":ah=au().top;al=au().left;S=0;aE=0;break;case"inside":ah=ab.top;al=ab.left;S=0;aE=0;break;case"top":ah=ab.top;al=ab.left;S=ah-aj;aE=al;break;case"left":ah=ab.top;al=ab.left;S=ah;aE=al-ac;break;case"bottom":ah=ab.top;al=ab.left;S=ah+aj;aE=al;break;case"right":default:ah=ab.top;al=ab.left;S=ah;aE=al+ac}ah-=ax.outerHeight()/2;al-=ax.outerWidth()/2;if(F.options.position.substr(0,1)=="#"){aC=b(F.options.position)}else{aC.length=0}if(aC.length==0&&F.options.position!="inside"&&F.options.position!="fullscreen"){if(!F.options.adaptive||!m||!q){m=ac;q=aj}if(F.options.zoomWidth=="auto"){Z=ac}else{Z=F.options.zoomWidth}if(F.options.zoomHeight=="auto"){ai=aj}else{ai=F.options.zoomHeight}S+=F.options.Yoffset;aE+=F.options.Xoffset;Q.css({width:Z+"px",height:ai+"px",top:S,left:aE});if(F.options.position!="lens"){N.append(Q)}}else{if(F.options.position=="inside"||F.options.position=="fullscreen"){Z=ac;ai=aj;Q.css({width:Z+"px",height:ai+"px"});ax.append(Q)}else{Z=aC.width();ai=aC.height();if(F.options.rootOutput){S=aC.offset().top;aE=aC.offset().left;N.append(Q)}else{S=aC.position().top;aE=aC.position().left;aC.parent().append(Q)}S+=(aC.outerHeight()-ai-Q.outerHeight())/2;aE+=(aC.outerWidth()-Z-Q.outerWidth())/2;Q.css({width:Z+"px",height:ai+"px",top:S,left:aE})}}if(F.options.title&&j!=""){if(F.options.position=="inside"||F.options.position=="lens"||F.options.position=="fullscreen"){y=S;an=aE;ax.append(w)}else{y=S+(Q.outerHeight()-ai)/2;an=aE+(Q.outerWidth()-Z)/2;N.append(w)}w.css({width:Z+"px",height:ai+"px",top:y,left:an})}ax.css({width:ac+"px",height:aj+"px",top:ah,left:al});o.css({width:ac+"px",height:aj+"px"});if(F.options.tint&&(F.options.position!="inside"&&F.options.position!="fullscreen")){o.css("background-color",F.options.tint)}else{if(E){o.css({"background-image":"url("+aw.attr("src")+")","background-color":"#fff"})}}ar=C=u;aq=A=aL;J=new Image();var v="";if(B){v="?r="+(new Date()).getTime()}J.src=aw.attr("xoriginal")+v;R=b(J);R.css("position","absolute");J=new Image();J.src=aw.attr("src");k=b(J);k.css("position","absolute");k.width(ac);switch(F.options.position){case"fullscreen":case"inside":Q.append(R);break;case"lens":l.append(R);if(F.options.bg){R.css({display:"none"})}break;default:Q.append(R);l.append(k)}}this.openzoom=function(u){if(F.options.adaptive){F.adaptive()}ak=F.options.defaultScale;aJ=false;ax=b("
");if(F.options.sourceClass!=""){ax.addClass(F.options.sourceClass)}ax.css("position","absolute");U=b("
");if(F.options.loadingClass!=""){U.addClass(F.options.loadingClass)}U.css("position","absolute");o=b('
');ax.append(U);Q=b("
");if(F.options.zoomClass!=""&&F.options.position!="fullscreen"){Q.addClass(F.options.zoomClass)}Q.css({position:"absolute",overflow:"hidden",opacity:1});if(F.options.title&&j!=""){w=b("
");K=b("
");w.css({position:"absolute",opacity:1});if(F.options.titleClass){K.addClass(F.options.titleClass)}K.html(""+j+"");w.append(K);if(F.options.fadeIn){w.css({opacity:0})}}l=b("
");if(F.options.lensClass!=""){l.addClass(F.options.lensClass)}l.css({position:"absolute",overflow:"hidden"});if(F.options.lens){lenstint=b("
");lenstint.css({position:"absolute",background:F.options.lens,opacity:F.options.lensOpacity,width:"100%",height:"100%",top:0,left:0,"z-index":9999});l.append(lenstint)}if(F.options.position!="inside"&&F.options.position!="fullscreen"){if(F.options.tint||E){ax.append(o)}if(F.options.fadeIn){o.css({opacity:0});l.css({opacity:0});Q.css({opacity:0})}N.append(ax)}else{if(F.options.fadeIn){Q.css({opacity:0})}N.append(ax)}F.eventmove(ax);F.eventleave(ax);O(u.pageX,u.pageY);switch(F.options.position){case"inside":S-=(Q.outerHeight()-Q.height())/2;aE-=(Q.outerWidth()-Q.width())/2;break;case"top":S-=Q.outerHeight()-Q.height();aE-=(Q.outerWidth()-Q.width())/2;break;case"left":S-=(Q.outerHeight()-Q.height())/2;aE-=Q.outerWidth()-Q.width();break;case"bottom":aE-=(Q.outerWidth()-Q.width())/2;break;case"right":S-=(Q.outerHeight()-Q.height())/2}Q.css({top:S,left:aE});R.xon("load",function(){U.remove();if(F.options.scroll){F.eventscroll(ax)}if(F.options.position!="inside"&&F.options.position!="fullscreen"){ax.append(l);if(F.options.fadeIn){o.fadeTo(300,F.options.tintOpacity);l.fadeTo(300,1);Q.fadeTo(300,1)}else{o.css({opacity:F.options.tintOpacity});l.css({opacity:1});Q.css({opacity:1})}}else{if(F.options.fadeIn){Q.fadeTo(300,1)}else{Q.css({opacity:1})}}if(F.options.title&&j!=""){if(F.options.fadeIn){w.fadeTo(300,1)}else{w.css({opacity:1})}}h=R.width();ag=R.height();if(F.options.adaptive){if(acac||aL<0||aL>aj){ax.trigger("mouseleave")}if(t&&!F.options.bg){C=v.pageX;A=v.pageY}else{x();e(v.pageX,v.pageY);l.css({top:at-n,left:av-P});k.css({top:-at,left:-av});D(v.pageX,v.pageY,0,0)}};this.eventdefault=function(){F.eventopen=function(u){u.xon("mouseenter",F.openzoom)};F.eventleave=function(u){u.xon("mouseleave",F.closezoom)};F.eventmove=function(u){u.xon("mousemove",F.movezoom)};F.eventscroll=function(u){u.xon("mousewheel DOMMouseScroll",F.xscroll)};F.eventclick=function(u){u.xon("click",function(v){aw.trigger("click")})}};this.eventunbind=function(){aw.xoff("mouseenter");F.eventopen=function(u){};F.eventleave=function(u){};F.eventmove=function(u){};F.eventscroll=function(u){};F.eventclick=function(u){}};this.init=function(u){F.options=b.extend({},b.fn.xzoom.defaults,u);if(F.options.rootOutput){N=b("body")}else{N=aw.parent()}am=F.options.position;d=F.options.lensReverse&&F.options.position=="inside";if(F.options.smoothZoomMove<0){F.options.smoothZoomMove=0}if(F.options.smoothLensMove<0){F.options.smoothLensMove=0}if(F.options.smoothScale<0){F.options.smoothScale=0}t=F.options.smoothZoomMove&&F.options.smoothLensMove&&F.options.smoothScale;if(F.options.adaptive){b(window).xon("load",function(){m=aw.width();q=aw.height();F.adaptive();b(window).resize(F.adaptive)})}F.eventdefault();F.eventopen(aw)};this.destroy=function(){F.eventunbind();delete F};this.closezoom=function(){aJ=false;if(F.options.fadeOut){if(F.options.title&&j!=""){w.fadeOut(299)}if(F.options.position!="inside"||F.options.position!="fullscreen"){Q.fadeOut(299);ax.fadeOut(300,function(){aG()})}else{ax.fadeOut(300,function(){aG()})}}else{aG()}};this.gallery=function(){var aL=new Array();var v,u=0;for(v=z;v=9){return false}else{if(a>=8){return true}else{if(a>=7){return true}else{if(a>=6){return true}else{if(a>=5){return true}}}}}}else{return false}}(function(b){b.fn.xon=b.fn.on||b.fn.bind;b.fn.xoff=b.fn.off||b.fn.bind;function a(ay,aH){this.xzoom=true;var F=this;var N;var aE={};var ae,al,ab,ak,ad,aj,an,S,aG,y,ap,aa,Y;var az,o,Q,U,T,ac,p=new Array();var G=new Array(),aD=0,z=0;var J,R,l,k;var ar,aC,ax,av,P,n,aM,aK,aB,aA,X,V,aq,am=0;var h,ai;var aL,C=0,A=0,ah=0,af=0,s=0,r=0,au=0,at=0,I=0,H=0;var E=detect_old_ie(),B=/MSIE (\d+\.\d+);/.test(navigator.userAgent),Z,W;var L,j="",K,w;var aJ,f,m,q,g,i,ao,d,t;this.adaptive=function(){if(m==0||q==0){ay.css("width","");ay.css("height","");m=ay.width();q=ay.height()}aI();aJ=b(window).width();f=b(window).height();g=ay.width();i=ay.height();var u=false;if(m>aJ||q>f){u=true}if(g>m){g=m}if(i>q){i=q}if(u){ay.width("100%")}else{if(m!=0){ay.width(m)}}if(ao!="fullscreen"){if(aF()){F.options.position=ao}else{F.options.position=F.options.mposition}}if(!F.options.lensReverse){d=F.options.adaptiveReverse&&F.options.position==F.options.mposition}};function aw(){var aN=document.documentElement;var v=(window.pageXOffset||aN.scrollLeft)-(aN.clientLeft||0);var u=(window.pageYOffset||aN.scrollTop)-(aN.clientTop||0);return{left:v,top:u}}function aF(){var u=ay.offset();if(F.options.zoomWidth=="auto"){ab=g}else{ab=F.options.zoomWidth}if(F.options.zoomHeight=="auto"){ak=i}else{ak=F.options.zoomHeight}if(F.options.position.substr(0,1)=="#"){aE=b(F.options.position)}else{aE.length=0}if(aE.length!=0){return true}switch(ao){case"lens":case"inside":return true;break;case"top":aj=u.top;an=u.left;S=aj-i;aG=an;break;case"left":aj=u.top;an=u.left;S=aj;aG=an-g;break;case"bottom":aj=u.top;an=u.left;S=aj+i;aG=an;break;case"right":default:aj=u.top;an=u.left;S=aj;aG=an+g}if(aG+ab>aJ||aG<0){return false}return true}this.xscroll=function(v){aa=v.pageX||v.originalEvent.pageX;Y=v.pageY||v.originalEvent.pageY;v.preventDefault();if(v.xscale){am=v.xscale;M(aa,Y)}else{var aO=-v.originalEvent.detail||v.originalEvent.wheelDelta||v.xdelta;var u=aa;var aN=Y;if(E){u=Z;aN=W}if(aO>0){aO=-0.05}else{aO=0.05}am+=aO;M(u,aN)}};function x(){if(F.options.lensShape=="circle"&&F.options.position=="lens"){ar=aC=Math.max(ar,aC);var u=(ar+Math.max(n,P)*2)/2;l.css({"-moz-border-radius":u,"-webkit-border-radius":u,"border-radius":u})}}function D(u,aO,aN,v){if(F.options.position=="lens"){R.css({top:-(aO-aj)*aA+(aC/2),left:-(u-an)*aB+(ar/2)});if(F.options.bg){l.css({"background-image":"url("+R.attr("src")+")","background-repeat":"no-repeat","background-position":(-(u-an)*aB+(ar/2))+"px "+(-(aO-aj)*aA+(aC/2))+"px"});if(aN&&v){l.css({"background-size":aN+"px "+v+"px"})}}}else{R.css({top:-av*aA,left:-ax*aB})}}function M(u,aP){if(am<-1){am=-1}if(am>1){am=1}if(Xae-ar){ax=ae-ar}if(av<0){av=0}if(av>al-aC){av=al-aC}}}function aI(){if(typeof az!="undefined"){az.remove()}if(typeof Q!="undefined"){Q.remove()}if(typeof w!="undefined"){w.remove()}}function O(u,aN){if(F.options.position=="fullscreen"){ae=b(window).width();al=b(window).height()}else{ae=ay.width();al=ay.height()}U.css({top:al/2-U.height()/2,left:ae/2-U.width()/2});if(F.options.rootOutput||F.options.position=="fullscreen"){ad=ay.offset()}else{ad=ay.position()}ad.top=Math.round(ad.top);ad.left=Math.round(ad.left);switch(F.options.position){case"fullscreen":aj=aw().top;an=aw().left;S=0;aG=0;break;case"inside":aj=ad.top;an=ad.left;S=0;aG=0;break;case"top":aj=ad.top;an=ad.left;S=aj-al;aG=an;break;case"left":aj=ad.top;an=ad.left;S=aj;aG=an-ae;break;case"bottom":aj=ad.top;an=ad.left;S=aj+al;aG=an;break;case"right":default:aj=ad.top;an=ad.left;S=aj;aG=an+ae}aj-=az.outerHeight()/2;an-=az.outerWidth()/2;if(F.options.position.substr(0,1)=="#"){aE=b(F.options.position)}else{aE.length=0}if(aE.length==0&&F.options.position!="inside"&&F.options.position!="fullscreen"){if(!F.options.adaptive||!m||!q){m=ae;q=al}if(F.options.zoomWidth=="auto"){ab=ae}else{ab=F.options.zoomWidth}if(F.options.zoomHeight=="auto"){ak=al}else{ak=F.options.zoomHeight}S+=F.options.Yoffset;aG+=F.options.Xoffset;Q.css({width:ab+"px",height:ak+"px",top:S,left:aG});if(F.options.position!="lens"){N.append(Q)}}else{if(F.options.position=="inside"||F.options.position=="fullscreen"){ab=ae;ak=al;Q.css({width:ab+"px",height:ak+"px"});az.append(Q)}else{ab=aE.width();ak=aE.height();if(F.options.rootOutput){S=aE.offset().top;aG=aE.offset().left;N.append(Q)}else{S=aE.position().top;aG=aE.position().left;aE.parent().append(Q)}S+=(aE.outerHeight()-ak-Q.outerHeight())/2;aG+=(aE.outerWidth()-ab-Q.outerWidth())/2;Q.css({width:ab+"px",height:ak+"px",top:S,left:aG})}}if(F.options.title&&j!=""){if(F.options.position=="inside"||F.options.position=="lens"||F.options.position=="fullscreen"){y=S;ap=aG;az.append(w)}else{y=S+(Q.outerHeight()-ak)/2;ap=aG+(Q.outerWidth()-ab)/2;N.append(w)}w.css({width:ab+"px",height:ak+"px",top:y,left:ap})}az.css({width:ae+"px",height:al+"px",top:aj,left:an});o.css({width:ae+"px",height:al+"px"});if(F.options.tint&&(F.options.position!="inside"&&F.options.position!="fullscreen")){o.css("background-color",F.options.tint)}else{if(E){o.css({"background-image":"url("+ay.attr("src")+")","background-color":"#fff"})}}J=new Image();var v="";if(B){v="?r="+(new Date()).getTime()}J.src=ay.attr("xoriginal")+v;R=b(J);R.css("position","absolute");J=new Image();J.src=ay.attr("src");k=b(J);k.css("position","absolute");k.width(ae);switch(F.options.position){case"fullscreen":case"inside":Q.append(R);break;case"lens":l.append(R);if(F.options.bg){R.css({display:"none"})}break;default:Q.append(R);l.append(k)}}this.openzoom=function(u){aa=u.pageX;Y=u.pageY;if(F.options.adaptive){F.adaptive()}am=F.options.defaultScale;aL=false;az=b("
");if(F.options.sourceClass!=""){az.addClass(F.options.sourceClass)}az.css("position","absolute");U=b("
");if(F.options.loadingClass!=""){U.addClass(F.options.loadingClass)}U.css("position","absolute");o=b('
');az.append(U);Q=b("
");if(F.options.zoomClass!=""&&F.options.position!="fullscreen"){Q.addClass(F.options.zoomClass)}Q.css({position:"absolute",overflow:"hidden",opacity:1});if(F.options.title&&j!=""){w=b("
");K=b("
");w.css({position:"absolute",opacity:1});if(F.options.titleClass){K.addClass(F.options.titleClass)}K.html(""+j+"");w.append(K);if(F.options.fadeIn){w.css({opacity:0})}}l=b("
");if(F.options.lensClass!=""){l.addClass(F.options.lensClass)}l.css({position:"absolute",overflow:"hidden"});if(F.options.lens){lenstint=b("
");lenstint.css({position:"absolute",background:F.options.lens,opacity:F.options.lensOpacity,width:"100%",height:"100%",top:0,left:0,"z-index":9999});l.append(lenstint)}if(F.options.position!="inside"&&F.options.position!="fullscreen"){if(F.options.tint||E){az.append(o)}if(F.options.fadeIn){o.css({opacity:0});l.css({opacity:0});Q.css({opacity:0})}N.append(az)}else{if(F.options.fadeIn){Q.css({opacity:0})}N.append(az)}F.eventmove(az);F.eventleave(az);O(aa,Y);switch(F.options.position){case"inside":S-=(Q.outerHeight()-Q.height())/2;aG-=(Q.outerWidth()-Q.width())/2;break;case"top":S-=Q.outerHeight()-Q.height();aG-=(Q.outerWidth()-Q.width())/2;break;case"left":S-=(Q.outerHeight()-Q.height())/2;aG-=Q.outerWidth()-Q.width();break;case"bottom":aG-=(Q.outerWidth()-Q.width())/2;break;case"right":S-=(Q.outerHeight()-Q.height())/2}Q.css({top:S,left:aG});R.xon("load",function(){U.remove();if(F.options.scroll){F.eventscroll(az)}if(F.options.position!="inside"&&F.options.position!="fullscreen"){az.append(l);if(F.options.fadeIn){o.fadeTo(300,F.options.tintOpacity);l.fadeTo(300,1);Q.fadeTo(300,1)}else{o.css({opacity:F.options.tintOpacity});l.css({opacity:1});Q.css({opacity:1})}}else{if(F.options.fadeIn){Q.fadeTo(300,1)}else{Q.css({opacity:1})}}if(F.options.title&&j!=""){if(F.options.fadeIn){w.fadeTo(300,1)}else{w.css({opacity:1})}}h=R.width();ai=R.height();if(F.options.adaptive){if(aeae||aN<0||aN>al){az.trigger("mouseleave")}if(t&&!F.options.bg){C=v.pageX;A=v.pageY}else{x();e(v.pageX,v.pageY);l.css({top:av-n,left:ax-P});k.css({top:-av,left:-ax});D(v.pageX,v.pageY,0,0)}};this.eventdefault=function(){F.eventopen=function(u){u.xon("mouseenter",F.openzoom)};F.eventleave=function(u){u.xon("mouseleave",F.closezoom)};F.eventmove=function(u){u.xon("mousemove",F.movezoom)};F.eventscroll=function(u){u.xon("mousewheel DOMMouseScroll",F.xscroll)};F.eventclick=function(u){u.xon("click",function(v){ay.trigger("click")})}};this.eventunbind=function(){ay.xoff("mouseenter");F.eventopen=function(u){};F.eventleave=function(u){};F.eventmove=function(u){};F.eventscroll=function(u){};F.eventclick=function(u){}};this.init=function(u){F.options=b.extend({},b.fn.xzoom.defaults,u);if(F.options.rootOutput){N=b("body")}else{N=ay.parent()}ao=F.options.position;d=F.options.lensReverse&&F.options.position=="inside";if(F.options.smoothZoomMove<0){F.options.smoothZoomMove=0}if(F.options.smoothLensMove<0){F.options.smoothLensMove=0}if(F.options.smoothScale<0){F.options.smoothScale=0}t=F.options.smoothZoomMove&&F.options.smoothLensMove&&F.options.smoothScale;if(F.options.adaptive){b(window).xon("load",function(){m=ay.width();q=ay.height();F.adaptive();b(window).resize(F.adaptive)})}F.eventdefault();F.eventopen(ay)};this.destroy=function(){F.eventunbind();delete F};this.closezoom=function(){aL=false;if(F.options.fadeOut){if(F.options.title&&j!=""){w.fadeOut(299)}if(F.options.position!="inside"||F.options.position!="fullscreen"){Q.fadeOut(299);az.fadeOut(300,function(){aI()})}else{az.fadeOut(300,function(){aI()})}}else{aI()}};this.gallery=function(){var aN=new Array();var v,u=0;for(v=z;v (https://payalord.github.io)", "Elman Guseynov (http://elman.pro)" diff --git a/src/xzoom.js b/src/xzoom.js index ae2e09d..0bd2145 100644 --- a/src/xzoom.js +++ b/src/xzoom.js @@ -1,5 +1,5 @@ /*!----------------------------------------------------- - * xZoom v1.0.6 + * xZoom v1.0.7 * (c) 2013 by Azat Ahmedov & Elman Guseynov * https://github.com/payalord * https://dribbble.com/elmanvebs @@ -44,7 +44,7 @@ if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ var parent; var xzoomID = {}; - var sw, sh, mw, mh, moffset, stop, sleft, mtop, mleft, ctop, cleft; + var sw, sh, mw, mh, moffset, stop, sleft, mtop, mleft, ctop, cleft, mx, my; var source, tint, preview, loading, trans, transImg, sobjects = new Array(); var imageGallery = new Array(), index = 0, cindex = 0; var img, imgObj, lens, lensImg; @@ -138,27 +138,28 @@ if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ } this.xscroll = function(event) { + mx = event.pageX || event.originalEvent.pageX; + my = event.pageY || event.originalEvent.pageY; + event.preventDefault(); if (event.xscale) { - var x = event.pageX || event.originalEvent.pageX; - var y = event.pageY || event.originalEvent.pageY; - scale = event.xscale; - xscale(x, y); + xscale(mx, my); } else { var delta = -event.originalEvent.detail || event.originalEvent.wheelDelta || event.xdelta; - var x = event.pageX || event.originalEvent.pageX; - var y = event.pageY || event.originalEvent.pageY; + var x = mx; + var y = my; if (ie) { x = iex; y = iey; } - if (delta > 0) delta = -0.05; else delta = 0.05; + if (delta > 0) delta = -0.05; else delta = 0.05; - scale += delta; - xscale(x, y); + scale += delta; + + xscale(x, y); } } @@ -230,8 +231,8 @@ if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ var y = lv; var x2 = llu; var y2 = llv; - var sx = lsu; - var sy = lsv; + var sx = lsu; + var sy = lsv; x += (u - x) / current.options.smoothLensMove; y += (v - y) / current.options.smoothLensMove; @@ -416,9 +417,6 @@ if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ tint.css({'background-image': 'url('+mObj.attr('src')+')', 'background-color': '#fff'}); } - lu = u = x; - lv = v = y; - //Image object img = new Image(); @@ -455,6 +453,8 @@ if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ } this.openzoom = function (event) { + mx = event.pageX; my = event.pageY; + if (current.options.adaptive) current.adaptive(); scale = current.options.defaultScale; flag = false; @@ -520,7 +520,7 @@ if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ //On mouse leave delete containers current.eventleave(source); - prepare_zoom(event.pageX, event.pageY); + prepare_zoom(mx, my); //Correct preview switch(current.options.position) { @@ -621,8 +621,9 @@ if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ //llc = (parseFloat(lens.css('padding-left-width')) + parseFloat(lens.css('padding-right-width')) + parseFloat(lens.css('border-left-width')) + parseFloat(lens.css('border-right-width'))) / 2; //ltc = (pb(lens, 'padding', 1) + pb(lens, 'border', 1)) / 2; //llc = (pb(lens, 'padding', 0) + pb(lens, 'border', 0)) / 2; - - xscale(event.pageX, event.pageY); + llu = lu = u = mx; + llv = lv = v = my; + xscale(mx, my); if (smoothNormal && !current.options.bg) {flag = true; requestAnimFrame(loopZoom);} @@ -639,13 +640,15 @@ if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ }*/ this.movezoom = function(event) { + mx = event.pageX; + my = event.pageY; if (ie) { - iex = event.pageX; - iey = event.pageY; + iex = mx; + iey = my; } - var x = event.pageX - sleft; - var y = event.pageY - stop; + var x = mx - sleft; + var y = my - stop; if (reverse) { event.pageX -= (x - sw / 2) * 2;