js原生实现轮播图(滚动式轮播图)
js原生实现滚动式轮播图
HTML部分
<body> <div id="banner"> <ul id="imglist"> <li> <a href=""><img src="image/01.jpg" alt=""></a> </li> <li> <a href=""><img src="image/02.jpg" alt=""></a> </li> <li> <a href=""><img src="image/03.jpg" alt=""></a> </li> <li> <a href=""><img src="image/04.jpg" alt=""></a> </li> <li> <a href=""><img src="image/01.jpg" alt=""></a> </li> </ul> <ul id="iconlist"> <li>1</li> <li>2</li> <li>3</li> <li>4</li> </ul> </div> </body>
CSS部分
<style> * { padding: 0px; margin: 0px; list-style: none; text-decoration: none; } #banner { position: relative; width: 1280px; height: 600px; overflow: hidden; border: 2px solid red; } #imglist { width: 7680px; height: 600px; } #imglist>li { float: left; width: 1280px; height: 600px; } #imglist>li img { width: 100%; height: 100%; } #iconlist { position: absolute; display: flex; justify-content: center; align-items: center; width: 100%; height: 50px; bottom: 0px; left: 0px; } #iconlist li { display: flex; justify-content: center; align-items: center; width: 30px; height: 30px; background-color: #fff; border-radius: 50%; margin: 0px 20px; cursor: pointer; } </style>
JS部分
<script> // 获取图片标签 var imgs = document.getElementById("imglist").getElementsByTagName("li"); // 获取列表 var icons = document.getElementById("iconlist").getElementsByTagName("li"); // 初始化图片的位置 var left = 0; imglist.style.marginLeft = left + "px" // 设置一个定时器 var timer; // 自调用 run() function run() { if (left <= -5120) { imglist.style.marginLeft = "0px"; left = 0; } // 如果位置为整张图片,暂停一秒 var n = (left % 1280 == 0) ? 1500 : 10; changeimg(); // 计算图片的下标 var m = Math.floor(-left / 1280); changeicon(m); left -= 10 timer = setTimeout(run, n); } function changeimg() { imglist.style.marginLeft = left + "px"; } function changeicon(m) { for (var i = 0; i < icons.length; i++) { icons[i].style.backgroundColor = ""; } icons[m].style.backgroundColor = "red"; } // 绑定图片事件 for (var i = 0; i < imgs.length; i++) { // 闭包解决函数内部外部变量通用问题()(i) (function(i) { imgs[i].onmousemove = function() { clearTimeout(timer) left = -i * 1280 changeimg() changeicon(i) } imgs[i].onmouseout = function() { run() } })(i) } // 绑定圆点事件 for (var i = 0; i < icons.length; i++) { // 闭包解决函数内部外部变量通用问题()(i) (function(i) { icons[i].onmousemove = function() { clearTimeout(timer) left = -i * 1280 changeimg() changeicon(i) } icons[i].onmouseout = function() { run() } })(i) } </script>
版权声明:本文为it1998原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。