js如何实现无缝轮播图效果

  介绍

这篇文章将为大家详细讲解有关js如何实现无缝轮播图效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

具体内容如下

//Utils.js   ,//封装,预加载图片   var 跑龙套=(function  (), {   return {才能   ,,//瑞士   ,,,loadImg: function  (srcList,回调),{//图片地址,回调函数   ,,,,,var  img=new 图像();   ,,,,,img.num=0;//初始化num为0,图片数   ,,,,,img.imgList=[];//存放图片   ,,,,,img.srcList=srcList;   ,,,,,img.callBack=回调;//回调函数   ,,,,,img.addEventListener (“load" this.loadHandler);//加载负荷   ,,,,,img.src=https://www.yisu.com/zixun/薄?img/? srcList [img.num];//拼接图片地址   },   loadHandler:函数(e) {//这个指代img/*版本该方法将复制并返回调用它的节点的副本。   *如果传递给它的参数是正确的,它还将递归复制当前节点的所有子孙节点。   否则(也就是默认值,或者假),它只复制当前节点。*/this.imgList.push (this.cloneNode (false));//将img图片尾插入imgList数组   this.num + +;   如果(this.num>=this.srcList.length){//图片数>=srcList数组(保存图片地址)的长度   this.callBack (this.imgList);//将数组传入回调函数   返回;   }//事件侦听没有被删除,只需更改src,监听加载加载后触发该事件,进入该函数this.loadHandler   this.src=" ./img/? this.srcList [this.num];   }   }   })();

全部代码:

& lt; ! DOCTYPE  html>   & lt; html  lang=癳n"祝辞   & lt; head>   & lt;才能meta  charset=癠TF-8"比;   & lt;才能title>无缝轮播图& lt;/title>   & lt;才能script  src=https://www.yisu.com/zixun/" js/Utils.js ">   <>脚本//无缝轮播图,全JS/*   * 1/轮播图大容器- ->图片容器,左右按钮,小圆点   * 2/点击按钮,标志当前挪动图片索引,移动的方向   * 3/点击小圆点,标志当前挪动图片的索引,移动的方向   * 4/创建目标图片放置在当前图片的前或后   * 5/移动图片容器到目标图片位置后,删除前或后原来的图片   * */var bnList、imgList imgCon, ul, pre;//存储左右按钮名图片名图片容器下方圆点标签容器   var=0,//图片的序号   方向="左",//方向   速度=30,   时间=300,   autoBoolean=false,   playBoolean=false;      const宽度=1200,//常量定义轮播图高宽   身高=400;      init ();   init()函数{//调用跑龙套中的loadImg方法将图片名数组和回调函数名传入   Utils.loadImg ([“left.png”、“right.png”、“a.jpeg”、“b.jpeg”、“c.jpeg”、“d.jpeg”、“e.jpeg”], createCarousel);   }      函数createCarousel(列表){//创建轮播图   bnList=list.splice(0, 2);//将左右移动图标名从列表数组中移除,添入bnList数组   imgList=列表;//将图片名添入数组imgList   imgList。forEach(函数(t){//遍历数组,给每个img元素添加宽高   t.style.width=宽度+“px”;   t.style.height=身高+“px”;   });   var旋转木马=ce (" div ",{//调用函数ce创建div并添加样式   宽度:宽度+“px”,   高度:身高+“px”,   位置:“相对”,   保证金:“汽车”,   溢出:“隐藏”,   写成backgroundColor:“rgba (255 0, 0, 0.3)”   });   console.log(旋转木马);//旋转木马为最外层div容器,包括轮播图容器,圆点标签,左右按钮   createImgCon(旋转木马);//调用函数createImgCon在旋转木马中创建轮播图图片容器,传入旋转木马为父容器   createBn(旋转木马);//调用函数createBn中创建左右按钮,传入旋转木马为父容器   createDot(旋转木马);//调用函数createDot中创建下方圆点标签,传入旋转木马为父容器   document.body.appendChild(旋转木马);//在身体中插入div旋转木马   carousel.addEventListener (“mouseenter”, mouseHandler);//给div旋转木马添加鼠标进入事件   carousel.addEventListener (“mouseleave”, mouseHandler);//给div旋转木马添加鼠标离开事件//下方圆点标签距左边距   ul.style.left=(WIDTH-ul.offsetWidth)/2 +“px”;   changeDot ();   setInterval(动画、16);//设置周期执行函数   }      函数mouseHandler (e){//鼠标停止,开始轮播图自动播放   如果(e.type===癿ouseenter”){//鼠标进入停止自动播放,重置时间计时   autoBoolean=false;   时间=300;   }else if (e.type===癿ouseleave”){//鼠标离开开始自动播放   autoBoolean=true;   }   }      函数createImgCon(父){//创建轮播图容器div   imgCon=ce (" div ",{//调用ce创建div   宽度:宽度+“px”,   高度:身高+“px”,   位置:“绝对”,   左:“0 px”   });   imgCon.appendChild (imgList(位置));//在创建的div imgCon中添加图片   parent.appendChild (imgCon);//在传来的父元素div中添加新建的div imgCon   }      函数createBn(父){//创建左右按钮接受传来的父元素   bnList。forEach(函数(t,指数){//遍历数组bnList   Object.assign (t.style, {   位置:“绝对”,   左:指数===0 ?“20 px”:“没有”,   右:指数===1 ?“20 px”:“没有”,   上图:(HEIGHT-t.height)/2 +“px”   });   t.addEventListener(“点击”,bnClickHandler);//按钮添加点击监听事件   parent.appendChild (t);//在传来的父元素中添加左右按钮   })   }      函数createDot(父){//创建下方圆点标签   ul=ce (“ul”{//调用ce创建ul、添加样式   listStyle:“没有”,   位置:“绝对”,   底:“20 px”,   保证金:“0 px”,   填充:“0 px”   });   imgList。forEach(函数(t,指数){//遍历imgList,有几张图创建几个李   李var=ce(“李”,{//新建李添加样式   浮:“左”,   宽度:“18 px”,   高度:“18 px”,   borderRadius:“9 px”,   边界:“1 px固体rgba (255 0, 0, 0.8)”,   marginLeft:指数===0 ?“0 px”:“10 px”   });   ul.appendChild(李);//ul中插入   });   ul.addEventListener(“点击”,dotClickHandler);//给ul添加监听单击时间事件委托   parent.appendChild (ul);//在父元素中插入ul   }      函数bnClickHandler (e){//左右移点击移动图片   如果(playBoolean)返回;   如果(bnList.indexOf(这)===0){//点击左移按钮   位置,//图片序号—   方向=罢贰钡?//图片方向向右   如果(位置

js如何实现无缝轮播图效果