介绍
这篇文章将为大家详细讲解有关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如何实现无缝轮播图效果