基于html+js实现轮播图(自动轮播、左右按钮、小圆点点击及切换图片)
使用html和js实现的一个简单小练习轮播图。大概功能主要是:
1、使用时间函数自动切换图片;
2、在图片及按钮及小圆点的父节点身上绑定事件代理,添加mouseenter及mouseleave事件类型,让鼠标移入,图片暂停,移出,图片恢复轮播;
3、在按钮的父节点身上绑定事件代理,事件类型为click,使用event.target判断点击的目标范围,让左右两个按钮,点击可以切换上一张或下一张;
4、给图片添加样式,让下面的四个小圆点会随图片变颜色;
5、在小圆点的父节点身上绑定事件代理,事件类型为click,同样使用event.target判断点击的目标范围,让小圆点可以点击并切换到对应的图片上。
依旧使用的是DOM2事件代理,详细的解释和代码步骤我都注释在下面的代码中的,请君一阅。
【注:仅作自己查看和分享学习之用】
效果图如下:
代码如下:
轮播图 section { position: relative; height: 500px; width: 780px; border: 1px solid; margin: 100px auto; } #img { height: 100%; width: 100%; background-size: 100% 100%; } p { position: absolute; left: 50%; bottom: 0px; transform: translate(-50%, -50%); } i { height: 15px; width: 15px; background-color: gray; border-radius: 50%; display: inline-block; margin-right: 10px; } i:nth-child(1) { background-color: white; } i:nth-child(4) { margin-right: 0; } .left, .right { color: rgba(255, 255, 255, 0.7); font-size: 50px; font-weight: bolder; position: absolute; top: 50%; font-weight: 500; } .left { left: 0px; transform: translate(15%, -50%); } .right { right: 0px; transform: translate(-15%, -50%); }
/** 需求: * 1、自动切换图片 2、鼠标移入,图片暂停,移出,图片恢复轮播 3、左右两个按钮,点击可以切换上一张或下一张 4、下面的四个小圆点会随图片变颜色 5、小圆点可以点击并切换到对应的图片上 */ //获取把圆点节点放置的盒子节点,即p节点 let pEle = document.getElementsByTagName("p")[0]; //获取事件代理的父元素section let secEle = document.getElementsByTagName("section")[0]; let imgArr = [ "https://blog.csdn.net/m0_71734538/article/details/img/冬至竹林1.jpg", "./img/冬至竹林2.jpg", "./img/冬至竹林3.jpg", "./img/冬至竹林4.jpg", ] //获取时间函数的起始下标 let i = 0; //图片有多少张,就传几个参进去,并且接收这个返回的数组 let cirArr = creatCircle(imgArr.length); //遍历cirArr数组,将圆点添加进它的父节点p节点中 cirArr.forEach(node => pEle.appendChild(node)); //获取所有的圆点节点 let iEle = document.getElementsByTagName("i"); //给每一个圆点添加上自定义属性,并赋上下标 for (let k = 0; k { //循环展示图片 i++; //如果已经跳到最后一张,就再次回到第一张 if (i > imgArr.length - 1) { i = 0; } //给圆点添加样式,开始运行该函数 addStyleI(i); //图片标签地址(src属性) img.src = imgArr[i]; }, 1000); } playTime(); // 鼠标移入,图片暂停 secEle.addEventListener("mouseenter", function () { clearInterval(timer); timer = null; }); // 鼠标移出,图片恢复滚动 secEle.addEventListener("mouseleave", playTime); //给父节点绑定一个事件代理,点击左右按钮切换图片 secEle.addEventListener("click", function (e) { let event = e || window.event; //点击左右按钮切换图片 if (event.target.className == "left iconfont icon-anniu_jiantouxiangzuo") { i--; } if (event.target.className == "right iconfont icon-anniu-jiantouxiangyou") { i++; } if (i node.style.backgroundColor = "gray"); //当跳到该图片时,圆点变成白色 iEle[index].style.backgroundColor = "white"; }
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。