JS实现横向轮播图(初级版)
程序员文章站
2022-03-10 11:22:07
本文实例为大家分享了js实现横向轮播图的具体代码,供大家参考,具体内容如下
描述:
轮播图,初级,横向buton或者底部数字控制轮播,可以实现自动轮播(注释了,使用的话将其注释消掉...
本文实例为大家分享了js实现横向轮播图的具体代码,供大家参考,具体内容如下
描述:
轮播图,初级,横向buton或者底部数字控制轮播,可以实现自动轮播(注释了,使用的话将其注释消掉),核心知识是数据驱动图像的位移达到效果。
效果:
代码:
js文件:
/* * 工厂模式 * */ var method=(function () { return { loadimage:function (arr,callback) { var img=new image(); img.arr=arr; img.list=[]; img.num=0; img.callback=callback; // 如果dom对象下的事件侦听没有被删除掉,将会常驻堆中 // 一旦触发了这个事件需要的条件,就会继续执行事件函数 img.addeventlistener("load",this.loadhandler); img.self=this; img.src=arr[img.num]; }, loadhandler:function (e) { this.list.push(this.clonenode(false)); this.num++; if(this.num>this.arr.length-1){ this.removeeventlistener("load",this.self.loadhandler); this.callback(this.list); return; } this.src=this.arr[this.num]; }, $c:function (type,parent,style) { var elem=document.createelement(type); if(parent) parent.appendchild(elem); for(var key in style){ elem.style[key]=style[key]; } return elem; } } })();
html文件:
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>title</title> <style> *{ margin: 0; padding: 0; } #carousel,#imgcon img{ width: 1200px; height: 400px; } #carousel { position: relative; margin: auto; overflow: hidden; } #imgcon{ width: 6000px; height: 400px; position: absolute; left: 0; font-size: 0; transition: all 1s; } #leftbn,#rightbn { position: absolute; top:170px; } #leftbn{ left: 20px; } #rightbn { right: 20px; } ul{ position: absolute; bottom: 20px; list-style: none; margin: auto; left: 45%; } li { width: 20px; height: 20px; border: 1px solid red; border-radius: 10px; float: left; text-align: center; color: white; cursor: default; line-height:20px; font-size: 12px; margin-left: 8px; } </style> </head> <body> <div id="carousel"> <div id="imgcon"> <img src="img/a.jpeg"> <img src="img/b.jpeg"> <img src="img/c.jpeg"> <img src="img/d.jpeg"> <img src="img/e.jpeg"> </div> <ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> </ul> <img src="img/left.png" id="leftbn"> <img src="img/right.png" id="rightbn"> </div> <script> /* * * 数据驱动显示 * * */ var imgcon,leftbn,rightbn,lis,ul,prevli; var position=0;//图像的标记 第一张0 第二张1... init(); function init() { imgcon=document.getelementbyid("imgcon");//图 leftbn=document.getelementbyid("leftbn");//左按钮 rightbn=document.getelementbyid("rightbn");//右按钮 lis=document.getelementsbytagname("li");//下方数字右按钮 ul=document.getelementsbytagname("ul")[0]; leftbn.addeventlistener("click",clickhandler); rightbn.addeventlistener("click",clickhandler); for(var i=0;i<lis.length;i++){//为每隔小li 也就是底部数字赋值 lis[i].num=i; lis[i].addeventlistener("click",liclickhandler); } changeli(); } // setinterval(autoimg,3000);可以实现自动 function autoimg() {//自动轮播 position++; if(position>4) position=0; changeimg(); } function clickhandler(e) { e= e || window.event; if(this===leftbn){ position--; if(position<0) position=4; }else if(this===rightbn){ position++; if(position>4) position=0; } changeimg(); } function liclickhandler(e) { e= e || window.event; position=this.num; changeimg(); } function changeimg() {//图片的转换效果 唯一 imgcon.style.left=-position*1200+"px";//一次一张图片的位移 changeli(); } function changeli() {//底部数字的转换效果 if(prevli){ prevli.style.backgroundcolor="rgba(255,0,0,0)"; } prevli=lis[position]; prevli.style.backgroundcolor="rgba(255,0,0,0.5)"; } </script> </body> </html>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。