JS实现显示带倒影的图片横排居中放大展示特效实例【测试可用】
本文实例讲述了JS实现显示带倒影的图片横排居中放大展示功能。分享给大家供大家参考,具体如下:
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <htmlxmlns="http://www.w3.org/1999/xhtml"> <head> <metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/> <title>JS实现显示倒影的图片横排居中放大展示特效</title> <metahttp-equiv="imagetoolbar"content="no"/> <styletype="text/css"> html{ overflow:hidden; } body{ margin:0px; padding:0px; background:#000; width:100%; height:100%; } #imageFlow{ position:absolute; width:100%; height:80%; left:0%; top:10%; background:#000; } #imageFlow.diapo{ position:absolute; left:-1000px; cursor:pointer; -ms-interpolation-mode:nearest-neighbor; } #imageFlow.link{ border:dotted#fff1px; margin-left:-1px; margin-bottom:-1px; } #imageFlow.bank{ visibility:hidden; } #imageFlow.top{ position:absolute; width:100%; height:2%; background:#003366; } #imageFlow.text{ position:absolute; left:0px; width:100%; bottom:-12px; text-align:center; color:#FFF; font-family:verdana,arial,Helvetica,sans-serif; z-index:1000; } #imageFlow.title{ font-size:0.9em; font-weight:bold; } #imageFlow.legend{ font-size:0.8em; } #imageFlow.scrollbar{ position:absolute; left:10%; bottom:10%; width:80%; height:16px; z-index:1000; } #imageFlow.track{ position:absolute; left:0.5%; width:98%; height:16px; filter:alpha(opacity=30); opacity:0.3; } #imageFlow.arrow-left{ position:absolute; } #imageFlow.arrow-right{ position:absolute; right:0px; } #imageFlow.bar{ position:absolute; height:16px; left:25px; } </style> <scripttype="text/javascript"> varimf=function(){ varlf=0; varinstances=[]; functiongetElementsByClass(object,tag,className){ varo=object.getElementsByTagName(tag); for(vari=0,n=o.length,ret=[];i<n;i++) if(o[i].className==className)ret.push(o[i]); if(ret.length==1)ret=ret[0]; returnret; } functionaddEvent(o,e,f){ if(window.addEventListener)o.addEventListener(e,f,false); elseif(window.attachEvent)r=o.attachEvent('on'+e,f); } functioncreateReflexion(cont,img){ varflx=false; if(document.createElement("canvas").getContext){ flx=document.createElement("canvas"); flx.width=img.width; flx.height=img.height; varcontext=flx.getContext("2d"); context.translate(0,img.height); context.scale(1,-1); context.drawImage(img,0,0,img.width,img.height); context.globalCompositeOperation="destination-out"; vargradient=context.createLinearGradient(0,0,0,img.height*2); gradient.addColorStop(1,"rgba(255,255,255,0)"); gradient.addColorStop(0,"rgba(255,255,255,1)"); context.fillStyle=gradient; context.fillRect(0,0,img.width,img.height*2); }else{ /*----DXImageTransform----*/ flx=document.createElement('img'); flx.src=img.src; flx.style.filter='flipvprogid:DXImageTransform.Microsoft.Alpha('+ 'opacity=50,style=1,finishOpacity=0,startx=0,starty=0,finishx=0,finishy='+ (img.height*.25)+')'; } /*----insertReflexion----*/ flx.style.position='absolute'; flx.style.left='-1000px'; cont.appendChild(flx); returnflx; } functionImageFlow(oCont,size,zoom,border){ this.diapos=[]; this.scr=false; this.size=size; this.zoom=zoom; this.bdw=border; this.oCont=oCont; this.oc=document.getElementById(oCont); this.scrollbar=getElementsByClass(this.oc,'div','scrollbar'); this.text=getElementsByClass(this.oc,'div','text'); this.title=getElementsByClass(this.text,'div','title'); this.legend=getElementsByClass(this.text,'div','legend'); this.bar=getElementsByClass(this.oc,'img','bar'); this.arL=getElementsByClass(this.oc,'img','arrow-left'); this.arR=getElementsByClass(this.oc,'img','arrow-right'); this.bw=this.bar.width; this.alw=this.arL.width-5; this.arw=this.arR.width-5; this.bar.parent=this.oc.parent=this; this.arL.parent=this.arR.parent=this; this.view=this.back=-1; this.resize(); this.oc.onselectstart=function(){returnfalse;} /*----createimages----*/ varimg=getElementsByClass(this.oc,'div','bank').getElementsByTagName('a'); this.NF=img.length; for(vari=0,o;o=img[i];i++){ this.diapos[i]=newDiapo(this,i, o.rel, o.title||'-'+i+'-', o.innerHTML||o.rel, o.href||'', o.target||'_self' ); } /*====addmousewheelevents====*/ if(window.addEventListener) this.oc.addEventListener('DOMMouseScroll',function(e){ this.parent.scroll(-e.detail); },false); elsethis.oc.onmousewheel=function(){ this.parent.scroll(event.wheelDelta); } /*====scrollbardragNdrop====*/ this.bar.onmousedown=function(e){ if(!e)e=window.event; varscl=e.screenX-this.offsetLeft; varself=this.parent; /*----movebar----*/ this.parent.oc.onmousemove=function(e){ if(!e)e=window.event; self.bar.style.left=Math.round(Math.min((self.ws-self.arw-self.bw),Math.max(self.alw,e.screenX-scl)))+'px'; self.view=Math.round(((e.screenX-scl))/(self.ws-self.alw-self.arw-self.bw)*self.NF); if(self.view!=self.back)self.calc(); returnfalse; } /*----releasescrollbar----*/ this.parent.oc.onmouseup=function(e){ self.oc.onmousemove=null; returnfalse; } returnfalse; } /*====rightarrow====*/ this.arR.onclick=this.arR.ondblclick=function(){ if(this.parent.view<this.parent.NF-1) this.parent.calc(1); } /*====Leftarrow====*/ this.arL.onclick=this.arL.ondblclick=function(){ if(this.parent.view>0) this.parent.calc(-1); } } ImageFlow.prototype={ /*====targets====*/ calc:function(inc){ if(inc)this.view+=inc; vartw=0; varlw=0; varo=this.diapos[this.view]; if(o&&o.loaded){ /*----reset----*/ varob=this.diapos[this.back]; if(ob&&ob!=o){ ob.img.className='diapo'; ob.z1=1; } /*----updatelegend----*/ this.title.replaceChild(document.createTextNode(o.title),this.title.firstChild); this.legend.replaceChild(document.createTextNode(o.text),this.legend.firstChild); /*----updatehyperlink----*/ if(o.url){ o.img.className='diapolink'; window.status='hyperlink:'+o.url; }else{ o.img.className='diapo'; window.status=''; } /*----calculatetargetsizes&positions----*/ o.w1=Math.min(o.iw,this.wh*.5)*o.z1; varx0=o.x1=(this.wh*.5)-(o.w1*.5); varx=x0+o.w1+this.bdw; for(vari=this.view+1,o;o=this.diapos[i];i++){ if(o.loaded){ o.x1=x; o.w1=(this.ht/o.r)*this.size; x+=o.w1+this.bdw; tw+=o.w1+this.bdw; } } x=x0-this.bdw; for(vari=this.view-1,o;o=this.diapos[i];i--){ if(o.loaded){ o.w1=(this.ht/o.r)*this.size; o.x1=x-o.w1; x-=o.w1+this.bdw; tw+=o.w1+this.bdw; lw+=o.w1+this.bdw; } } /*----movescrollbar----*/ if(!this.scr&&tw){ varr=(this.ws-this.alw-this.arw-this.bw)/tw; this.bar.style.left=Math.round(this.alw+lw*r)+'px'; } /*----savepreviewview----*/ this.back=this.view; } }, /*====mousewheelscrolling====*/ scroll:function(sc){ if(sc<0){ if(this.view<this.NF-1)this.calc(1); }else{ if(this.view>0)this.calc(-1); } }, /*====resize====*/ resize:function(){ this.wh=this.oc.clientWidth; this.ht=this.oc.clientHeight; this.ws=this.scrollbar.offsetWidth; this.calc(); this.run(true); }, /*====moveallimages====*/ run:function(res){ vari=this.NF; while(i--)this.diapos[i].move(res); } } Diapo=function(parent,N,src,title,text,url,target){ this.parent=parent; this.loaded=false; this.title=title; this.text=text; this.url=url; this.target=target; this.N=N; this.img=document.createElement('img'); this.img.src=src; this.img.parent=this; this.img.className='diapo'; this.x0=this.parent.oc.clientWidth; this.x1=this.x0; this.w0=0; this.w1=0; this.z1=1; this.img.parent=this; this.img.onclick=function(){this.parent.click();} this.parent.oc.appendChild(this.img); /*----displayexternallink----*/ if(url){ this.img.onmouseover=function(){this.className='diapolink';} this.img.onmouseout=function(){this.className='diapo';} } } Diapo.prototype={ /*====HTMLrendering====*/ move:function(res){ if(this.loaded){ varsx=this.x1-this.x0; varsw=this.w1-this.w0; if(Math.abs(sx)>2||Math.abs(sw)>2||res){ /*----paintonlywhenmoving----*/ this.x0+=sx*.1; this.w0+=sw*.1; if(this.x0<this.parent.wh&&this.x0+this.w0>0){ /*----paintonlyvisibleimages----*/ this.visible=true; varo=this.img.style; varh=this.w0*this.r; /*----diapo----*/ o.left=Math.round(this.x0)+'px'; o.bottom=Math.floor(this.parent.ht*.25)+'px'; o.width=Math.round(this.w0)+'px'; o.height=Math.round(h)+'px'; /*----reflexion----*/ if(this.flx){ varo=this.flx.style; o.left=Math.round(this.x0)+'px'; o.top=Math.ceil(this.parent.ht*.75+1)+'px'; o.width=Math.round(this.w0)+'px'; o.height=Math.round(h)+'px'; } }else{ /*----disableinvisibleimages----*/ if(this.visible){ this.visible=false; this.img.style.width='0px'; if(this.flx)this.flx.style.width='0px'; } } } }else{ /*====imageonload====*/ if(this.img.complete&&this.img.width){ /*----getsizeimage----*/ this.iw=this.img.width; this.ih=this.img.height; this.r=this.ih/this.iw; this.loaded=true; /*----createreflexion----*/ this.flx=createReflexion(this.parent.oc,this.img); if(this.parent.view<0)this.parent.view=this.N; this.parent.calc(); } } }, /*====diapoonclick====*/ click:function(){ if(this.parent.view==this.N){ /*----clickonzoomeddiapo----*/ if(this.url){ /*----openhyperlink----*/ window.open(this.url,this.target); }else{ /*----zoomin/out----*/ this.z1=this.z1==1?this.parent.zoom:1; this.parent.calc(); } }else{ /*----selectdiapo----*/ this.parent.view=this.N; this.parent.calc(); } returnfalse; } } return{ /*====initializescript====*/ create:function(div,size,zoom,border){ /*----instanciateimageFlow----*/ varload=function(){ varloaded=false; vari=instances.length; while(i--)if(instances[i].oCont==div)loaded=true; if(!loaded){ /*----pushnewimageFlowinstance----*/ instances.push( newImageFlow(div,size,zoom,border) ); /*----initscript(once)----*/ if(!imf.initialized){ imf.initialized=true; /*----windowresizeevent----*/ addEvent(window,'resize',function(){ vari=instances.length; while(i--)instances[i].resize(); }); /*----stopdragNdrop----*/ addEvent(document.getElementById(div),'mouseout',function(e){ if(!e)e=window.event; vartg=e.relatedTarget||e.toElement; if(tg&&tg.tagName=='HTML'){ vari=instances.length; while(i--)instances[i].oc.onmousemove=null; } returnfalse; }); /*----setintervalloop----*/ setInterval(function(){ vari=instances.length; while(i--)instances[i].run(); },16); } } } /*----windowonloadevent----*/ addEvent(window,'load',function(){load();}); } } }(); //divID,size,zoom,border imf.create("imageFlow",0.15,1.5,10); </script> </head> <body> <divid="imageFlow"> <divclass="top"> </div> <divclass="bank"> <arel="images/1.jpg"title=""href="#"_fcksavedurl="#">室内三维设计效果图</a> <arel="images/2.jpg"title=""href="#"_fcksavedurl="#">室内三维设计效果图</a> <arel="images/3.jpg"title=""href="#"_fcksavedurl="#">室内三维设计效果图</a> <arel="images/4.jpg"title=""href="#"_fcksavedurl="#">室内三维设计效果图</a> <arel="images/5.jpg"title=""href="#"_fcksavedurl="#">室内三维设计效果图</a> <arel="images/6.jpg"title=""href="#"_fcksavedurl="#">室内三维设计效果图</a> <arel="images/1.jpg"title=""href="#"_fcksavedurl="#">室内三维设计效果图</a> <arel="images/2.jpg"title=""href="#"_fcksavedurl="#">室内三维设计效果图</a> <arel="images/3.jpg"title=""href="#"_fcksavedurl="#">室内三维设计效果图</a> <arel="images/4.jpg"title=""href="#"_fcksavedurl="#">室内三维设计效果图</a> <arel="images/5.jpg"title=""href="#"_fcksavedurl="#">室内三维设计效果图</a> <arel="images/6.jpg"title=""href="#"_fcksavedurl="#">室内三维设计效果图</a> <arel="images/2.jpg"title=""href="#"_fcksavedurl="#">室内三维设计效果图</a> <arel="images/1.jpg"title=""href="#"_fcksavedurl="#">室内三维设计效果图</a></div> <divclass="text"> <divclass="title"> Loading</div> <divclass="legend"> Pleasewait...</div> </div> <divclass="scrollbar"> <imgclass="track"src=""_fcksavedurl=""alt=""> <imgclass="arrow-left"src="images/l.jpg"_fcksavedurl="images/l.jpg"alt=""> <imgclass="arrow-right"src="images/r.jpg"_fcksavedurl="images/r.jpg"alt=""> <imgclass="bar"src="images/s.png"_fcksavedurl="images/s.png"alt=""></div> </div> </body> </html>
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript动画特效与技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。