想问一下老师如何实现间隔一定时间轮播一次图呢?我发现封装之后好像触发不了事件,但是感觉应该比较简单能实现的
来源:6-4 编写呼吸轮播特效
陆小小
2021-09-07 16:43:43
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> * { margin: 0; padding: 0; } .carousel ul { list-style: none; } .carousel ul li { position: absolute; top: 0; left: 0; opacity: 0; transition: opacity 1s ease 0s; } .carousel ul li:first-child { opacity: 1; } .carousel { position: relative; margin: 50px auto; width: 650px; height: 360px; border: 1px solid #000; /* overflow: hidden; */ } .carousel .btn { position: absolute; top: 50%; margin-top: -25px; width: 50px; height: 50px; border-radius: 50%; background-color: rgba(238, 14, 14, .5); } .carousel .lbtn { left: 10px; } .carousel .rbtn { right: 10px; } </style> </head> <body> <div class="carousel" id="carousel"> <ul id="list"> <li><img src="images/beijing/0.jpg" alt=""></li> <li><img src="images/beijing/1.jpg" alt=""></li> <li><img src="images/beijing/2.jpg" alt=""></li> <li><img src="images/beijing/3.jpg" alt=""></li> <li><img src="images/beijing/4.jpg" alt=""></li> </ul> <a href="javascript:;" class="lbtn btn" id="lbtn"></a> <a href="javascript:;" class="rbtn btn" id="rbtn"></a> </div> <script> var box = document.getElementById('carousel'); var list = document.getElementById('list'); var lbtn = document.getElementById('lbtn'); var rbtn = document.getElementById('rbtn'); var lis = document.getElementsByTagName('li'); //全局变量图号 var pic = 0; //节流锁 var lock = true; //左键全局变量定时器 var leftbtn; //右键全局变量定时器 var rightbtn; //封装函数 function moveright() { //右按钮事件 rightbtn = rbtn.onclick = function () { if (!lock) return; lock = false; lis[pic].style.opacity = '0'; pic++; if (pic > 4) pic = 0; lis[pic].style.opacity = '1'; setTimeout(function () { lock = true; }, 500); } }; function moveleft() { //左按钮事件 leftbtn = lbtn.onclick = function () { if (!lock) return; lock = false; lis[pic].style.opacity = '0'; pic--; if (pic < 0) pic = 4; lis[pic].style.opacity = '1'; setTimeout(function () { lock = true; }, 500); } }; //每一段时间轮播一次图 setInterval(function () { moveright(); }, 1000); </script> </body> </html>
1回答
同学你好,可以参考如下思路试下效果:
定义一个函数表示自动轮播,该函数内容通过定时器实现隔一段时间切换图片,然后调用该函数开启自动轮播
给外层盒子添加鼠标移入移出事件。
去掉封装的函数
祝学习愉快~
相似问题