javascript实现图片左右滚动效果【可自动滚动,有左右按钮】
本文实例讲述了javascript实现图片左右滚动效果。分享给大家供大家参考,具体如下:
html代码:
<!doctypehtml> <htmllang="en"> <head> <metacharset="UTF-8"/> <metahttp-equiv="X-UA-Compatible"content="IE=edge,chrome=1"/> <metaname="renderer"content="webkit"/> <metaname="keywords"content=""/> <metaname="description"content=""/> <title>图片滚动</title> <style> *{margin:0;padding:0;} ul{list-style:none;} img{border:0;} .scroll{width:358px;height:63px;} .scroll_left{width:23px;height:63px;background:url(images/btn_left.jpg)no-repeat;float:left;} .scroll_right{width:23px;height:63px;background:url(images/btn_right.jpg)leftno-repeat;float:left;} .pic{width:312px;height:73px;float:left;} .picul{display:block;} .picli{float:left;display:inline;width:104px;text-align:center;} </style> </head> <body> <divstyle="margin:100pxauto;width:358px;"> <divclass="scroll"> <divclass="scroll_left"id="LeftArr"></div> <divclass="pic"id="scrollPic"> <ul> <li><ahref="#"target="_blank"title=""><imgsrc="images/pic01.png"width="100"height="63"alt=""/></a></li> <li><ahref="#"target="_blank"title=""><imgsrc="images/pic02.jpg"width="100"height="63"alt=""/></a></li> <li><ahref="#"target="_blank"title=""><imgsrc="images/pic03.jpg"width="100"height="63"alt=""/></a></li> <li><ahref="#"target="_blank"title=""><imgsrc="images/pic04.jpg"width="100"height="63"alt=""/></a></li> <li><ahref="#"target="_blank"title=""><imgsrc="images/pic05.jpg"width="100"height="63"alt=""/></a></li> <li><ahref="#"target="_blank"title=""><imgsrc="images/pic06.jpg"width="100"height="63"alt=""/></a></li> </ul> </div> <divclass="scroll_right"id="RightArr"></div> </div> </div> </body> </html> <scriptsrc="scrollPic.js"></script> <script> window.onload=function(){ scrollPic(); } functionscrollPic(){ varscrollPic=newScrollPic(); scrollPic.scrollContId="scrollPic";//内容容器ID scrollPic.arrLeftId="LeftArr";//左箭头ID scrollPic.arrRightId="RightArr";//右箭头ID scrollPic.frameWidth=312;//显示框宽度 scrollPic.pageWidth=104;//翻页宽度 scrollPic.speed=10;//移动速度(单位毫秒,越小越快) scrollPic.space=10;//每次移动像素(单位px,越大越快) scrollPic.autoPlay=true;//自动播放 scrollPic.autoPlayTime=3;//自动播放间隔时间(秒) scrollPic.initialize();//初始化 } </script>
scrollPic.js代码:
varsina={ $:function(objName){ if(document.getElementById){ returneval('document.getElementById("'+objName+'")') }else{ returneval('document.all.'+objName) } }, isIE:navigator.appVersion.indexOf("MSIE")!=-1?true:false, addEvent:function(l,i,I){ if(l.attachEvent){ l.attachEvent("on"+i,I) }else{ l.addEventListener(i,I,false) } }, delEvent:function(l,i,I){ if(l.detachEvent){ l.detachEvent("on"+i,I) }else{ l.removeEventListener(i,I,false) } }, readCookie:function(O){ varo="", l=O+"="; if(document.cookie.length>0){ vari=document.cookie.indexOf(l); if(i!=-1){ i+=l.length; varI=document.cookie.indexOf(";",i); if(I==-1) I=document.cookie.length; o=unescape(document.cookie.substring(i,I)) } }; returno }, writeCookie:function(i,l,o,c){ varO="", I=""; if(o!=null){ O=newDate((newDate).getTime()+o*3600000); O=";expires="+O.toGMTString() }; if(c!=null){ I=";domain="+c }; document.cookie=i+"="+escape(l)+O+I }, readStyle:function(I,l){ if(I.style[l]){ returnI.style[l] }elseif(I.currentStyle){ returnI.currentStyle[l] }elseif(document.defaultView&&document.defaultView.getComputedStyle){ vari=document.defaultView.getComputedStyle(I,null); returni.getPropertyValue(l) }else{ returnnull } } }; //滚动图片构造函数 //UI&UEDept.mengjia //080623 functionScrollPic(scrollContId,arrLeftId,arrRightId,dotListId){ this.scrollContId=scrollContId; this.arrLeftId=arrLeftId; this.arrRightId=arrRightId; this.dotListId=dotListId; this.dotClassName="dotItem"; this.dotOnClassName="dotItemOn"; this.dotObjArr=[]; this.pageWidth=0; this.frameWidth=0; this.speed=10; this.space=10; this.pageIndex=0; this.autoPlay=true; this.autoPlayTime=5; var_autoTimeObj, _scrollTimeObj, _state="ready"; this.stripDiv=document.createElement("DIV"); this.listDiv01=document.createElement("DIV"); this.listDiv02=document.createElement("DIV"); if(!ScrollPic.childs){ ScrollPic.childs=[] }; this.ID=ScrollPic.childs.length; ScrollPic.childs.push(this); this.initialize=function(){ if(!this.scrollContId){ thrownewError("必须指定scrollContId."); return }; this.scrollContDiv=sina.$(this.scrollContId); if(!this.scrollContDiv){ thrownewError("scrollContId不是正确的对象.(scrollContId=\""+this.scrollContId+"\")"); return }; this.scrollContDiv.style.width=this.frameWidth+"px"; this.scrollContDiv.style.overflow="hidden"; this.listDiv01.innerHTML=this.listDiv02.innerHTML=this.scrollContDiv.innerHTML; this.scrollContDiv.innerHTML=""; this.scrollContDiv.appendChild(this.stripDiv); this.stripDiv.appendChild(this.listDiv01); this.stripDiv.appendChild(this.listDiv02); this.stripDiv.style.overflow="hidden"; this.stripDiv.style.zoom="1"; this.stripDiv.style.width="32766px"; if(-[1,]){ this.listDiv01.style.cssFloat="left"; this.listDiv02.style.cssFloat="left"; }else{ this.listDiv01.style.styleFloat="left"; this.listDiv02.style.styleFloat="left"; } sina.addEvent(this.scrollContDiv,"mouseover",Function("ScrollPic.childs["+this.ID+"].stop()")); sina.addEvent(this.scrollContDiv,"mouseout",Function("ScrollPic.childs["+this.ID+"].play()")); if(this.arrLeftId){ this.arrLeftObj=sina.$(this.arrLeftId); if(this.arrLeftObj){ sina.addEvent(this.arrLeftObj,"mousedown",Function("ScrollPic.childs["+this.ID+"].rightMouseDown()")); sina.addEvent(this.arrLeftObj,"mouseup",Function("ScrollPic.childs["+this.ID+"].rightEnd()")); sina.addEvent(this.arrLeftObj,"mouseout",Function("ScrollPic.childs["+this.ID+"].rightEnd()")) } }; if(this.arrRightId){ this.arrRightObj=sina.$(this.arrRightId); if(this.arrRightObj){ sina.addEvent(this.arrRightObj,"mousedown",Function("ScrollPic.childs["+this.ID+"].leftMouseDown()")); sina.addEvent(this.arrRightObj,"mouseup",Function("ScrollPic.childs["+this.ID+"].leftEnd()")); sina.addEvent(this.arrRightObj,"mouseout",Function("ScrollPic.childs["+this.ID+"].leftEnd()")) } }; if(this.dotListId){ this.dotListObj=sina.$(this.dotListId); if(this.dotListObj){ varpages=Math.round(this.listDiv01.offsetWidth/this.frameWidth+0.4), i, tempObj; for(i=0;i<pages;i++){ tempObj=document.createElement("span"); this.dotListObj.appendChild(tempObj); this.dotObjArr.push(tempObj); if(i==this.pageIndex){ tempObj.className=this.dotClassName }else{ tempObj.className=this.dotOnClassName }; tempObj.title="第"+(i+1)+"页"; sina.addEvent(tempObj,"click",Function("ScrollPic.childs["+this.ID+"].pageTo("+i+")")) } } }; if(this.autoPlay){ this.play() } }; this.leftMouseDown=function(){ if(_state!="ready"){ return }; _state="floating"; _scrollTimeObj=setInterval("ScrollPic.childs["+this.ID+"].moveLeft()",this.speed) }; this.rightMouseDown=function(){ if(_state!="ready"){ return }; _state="floating"; _scrollTimeObj=setInterval("ScrollPic.childs["+this.ID+"].moveRight()",this.speed) }; this.moveLeft=function(){ if(this.scrollContDiv.scrollLeft+this.space>=this.listDiv01.scrollWidth){ this.scrollContDiv.scrollLeft=this.scrollContDiv.scrollLeft+this.space-this.listDiv01.scrollWidth }else{ this.scrollContDiv.scrollLeft+=this.space }; this.accountPageIndex() }; this.moveRight=function(){ if(this.scrollContDiv.scrollLeft-this.space<=0){ this.scrollContDiv.scrollLeft=this.listDiv01.scrollWidth+this.scrollContDiv.scrollLeft-this.space }else{ this.scrollContDiv.scrollLeft-=this.space }; this.accountPageIndex() }; this.leftEnd=function(){ if(_state!="floating"){ return }; _state="stoping"; clearInterval(_scrollTimeObj); varfill=this.pageWidth-this.scrollContDiv.scrollLeft%this.pageWidth; this.move(fill) }; this.rightEnd=function(){ if(_state!="floating"){ return }; _state="stoping"; clearInterval(_scrollTimeObj); varfill=-this.scrollContDiv.scrollLeft%this.pageWidth; this.move(fill) }; this.move=function(num,quick){ varthisMove=num/5; if(!quick){ if(thisMove>this.space){ thisMove=this.space }; if(thisMove<-this.space){ thisMove=-this.space } }; if(Math.abs(thisMove)<1&&thisMove!=0){ thisMove=thisMove>=0?1:-1 }else{ thisMove=Math.round(thisMove) }; vartemp=this.scrollContDiv.scrollLeft+thisMove; if(thisMove>0){ if(this.scrollContDiv.scrollLeft+thisMove>=this.listDiv01.scrollWidth){ this.scrollContDiv.scrollLeft=this.scrollContDiv.scrollLeft+thisMove-this.listDiv01.scrollWidth }else{ this.scrollContDiv.scrollLeft+=thisMove } }else{ if(this.scrollContDiv.scrollLeft-thisMove<=0){ this.scrollContDiv.scrollLeft=this.listDiv01.scrollWidth+this.scrollContDiv.scrollLeft-thisMove }else{ this.scrollContDiv.scrollLeft+=thisMove } }; num-=thisMove; if(Math.abs(num)==0){ _state="ready"; if(this.autoPlay){ this.play() }; this.accountPageIndex(); return }else{ this.accountPageIndex(); setTimeout("ScrollPic.childs["+this.ID+"].move("+num+","+quick+")",this.speed) } }; this.next=function(){ if(_state!="ready"){ return }; _state="stoping"; this.move(this.pageWidth,true) }; this.play=function(){ if(!this.autoPlay){ return }; clearInterval(_autoTimeObj); _autoTimeObj=setInterval("ScrollPic.childs["+this.ID+"].next()",this.autoPlayTime*1000) }; this.stop=function(){ clearInterval(_autoTimeObj) }; this.pageTo=function(num){ if(_state!="ready"){ return }; _state="stoping"; varfill=num*this.frameWidth-this.scrollContDiv.scrollLeft; this.move(fill,true) }; this.accountPageIndex=function(){ this.pageIndex=Math.round(this.scrollContDiv.scrollLeft/this.frameWidth); if(this.pageIndex>Math.round(this.listDiv01.offsetWidth/this.frameWidth+0.4)-1){ this.pageIndex=0 }; vari; for(i=0;i<this.dotObjArr.length;i++){ if(i==this.pageIndex){ this.dotObjArr[i].className=this.dotClassName }else{ this.dotObjArr[i].className=this.dotOnClassName } } } };
参数说明:
varscrollPic=newScrollPic(); //定义变量,并初始化方法
scrollContId //滚动容器的ID
arrLeftId //左按钮ID
arrRightId //右按钮ID
frameWidth //显示框宽度
pageWidth //翻页宽度
speed //移动速度(单位毫秒,越小越快)
space //每次移动像素(单位px,越大越快)
autoPlay //自动播放
autoPlayTime //自动播放间隔时间(秒)
initialize() //初始化
完整实例代码点击此处本站下载。
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript动画特效与技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。