HTML轮播图
2020-08-11 15:20
274 查看
轮播图(HTML+CSS+JS)
学习JS过程中,学习了很多轮播图的实现方法,然后想到试着用操作某对象的类的方法来实现一下。思路:
首先为所有图片设置opacity:0,然后有一个类写了样式opacity:1。当轮播到某张图片时,把这个类给它加上即会显示该图片,同时把之前一张显示的图片的这个类移除了。
代码:
代码如下,如有疏漏或错误之处,敬请斧正。
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>轮播图 可点击切换</title> <style> * { margin: 0; padding: 0; } li { list-style: none; } .changeImgs { position: relative; } .container { position: relative; margin: 100px auto; height: 450px; width: 650px; } /*设置每张图片的样式*/ .container li { position: absolute; height: 450px; width: 650px; opacity: 0; /*淡出的效果*/ transition: opacity 1.4s; } li > img { height: 100%; width: 100%; } .container .show { opacity: 1; } .dots { display: flex; justify-content: space-around; align-items: center; height: 16px; width: 170px; position: absolute; left: 50%; bottom: 6%; transform: translateX(-50%); text-align: center; } .dot { overflow: hidden; height: 10px; width: 10px; border-radius: 50%; } .dot-son { position: relative; height: 10px; width: 10px; left: 50%; top: 50%; transform: translate(-50%, -50%); background-color: rgba(255, 255, 255, .4); border: 3px solid rgba(0, 0, 0, 0.05); border-radius: 50%; } .dot:hover { overflow: visible; } </style> <!-- 这个里面写了俩函数,为某对象移除某类和添加某类--> <script> //为某个DOM对象添加一个类, // obj为该对象, //cn为要添加的类名. function addClass(obj,cn) { var re=new RegExp("\\b"+cn+"\\b"); if (!re.test(obj.className)) obj.className+=" "+cn; } //为某个DOM对象移除一个已有的类 //obj为该对象 //cn为要移除的类名 function removeClass(obj,cn) { var re=new RegExp("\\s"+cn+"\\b"); if (re.test(obj.className)) obj.className=obj.className.replace(re,""); } </script> <script> window.onload = function () { //获取图片对象 var imgs = document.querySelectorAll(".container li"); var i = 1; var k = 0; var timerClean; var timerRoll; function autoRoll() { timerRoll = setInterval(function () { addClass(imgs[i++], "show"); if (i == imgs.length) i = 0; }, 4000); //方法一,感觉良好 timerClean = setInterval(function () { removeClass(imgs[k++], "show"); if (k == imgs.length) k = 0; }, 4000); } autoRoll(); //消除类的方法2感觉不如方法1。但是无可厚非。 // var m = -1; // for (var m=0;m<imgs.length;m++) // { // removeClass(imgs[m],"show"); // } var dots = document.querySelectorAll(".dots .dot"); //定义一个函数,展示索引为index的图片 function showimg(index) { for (var j = 0; j < imgs.length; j++) { removeClass(imgs[j], "show"); } addClass(imgs[index], "show"); } //为每个按钮绑定 鼠标点击事件,点击后关闭加类和消除类定时器,按照新索引重新开启它们。 //同时,调用showimg函数展示对应图片。 for (var z = 0; z < dots.length; z++) { dots[z].num = z; dots[z].onclick = function () { clearInterval(timerRoll); clearInterval(timerClean); i = (this.num + 1) % imgs.length; k = this.num; showimg(this.num); autoRoll(); } } } </script> </head> <body> <div class="changeImgs"> <ul class="container"> <li class="img show"><img src="image/1.png" alt=""></li> <li class="img"><img src="image/2.png" alt=""></li> <li class="img"><img src="image/3.png" alt=""></li> <li class="img"><img src="image/4.png" alt=""></li> <li class="img"><img src="image/5.png" alt=""></li> </ul> <ul class="dots"> <li class="dot"> <div class="dot-son"></div> </li> <li class="dot"> <div class="dot-son"></div> </li> <li class="dot"> <div class="dot-son"></div> </li> <li class="dot"> <div class="dot-son"></div> </li> <li class="dot"> <div class="dot-son"></div> </li> </ul> </div> </body> </html>
相关文章推荐
- 轮播图.html
- html轮播
- Flexslider图片轮播、文字图片相结合滑动切换效果HTML 首先在页面head部位载入jquery库文件和Flexslider插件,以及Flexslider所需的基本css样式文件。
- JQuery和html+css实现带小圆点和左右按钮的轮播图实例
- html+css制作图片轮播
- 使用HTML实现图片切换/轮播
- JS+HTML+CSS实现轮播效果
- HTML,css旋转轮播图
- HTML 轮播的实现
- HTML 之轮播图
- html+css+js实现原生轮播特效
- 简单的通知轮播 jquery + html + css 实现
- html+css+javascript实现简易轮播图片
- HTML+jq简单轮播图
- Html 中框架与轮播JS
- HTML练习二--动态加载轮播图片
- jquery+html文字轮播
- 【用HTML+CSS实现简单的轮播图片效果】
- HTML5学习_day06(5)--html之固定总结(轮播图 垂直居中)
- html 轮播图