使用原生JavaScript实现轮播图

xiaoxiao2021-02-28  67

首先我们整理一下轮播图的实现规则,使用绝对定位设置left值的方式 1、没有点击时,图片会自动向后循环翻转 2、鼠标放在图片上,停止自动循环 3、鼠标移开时回复自动循环 4、点击上一页的时候,图片停止自动循环,图片向右移动 left+imgWidth,当移动到第一个图片时再点击上一页直接跳到最后一页,点击结束后恢复自动循环 5、点击下一页的时候,图片停止自动循环,图片向左移动 left-imgWidth,当移动到最后一个图片时再点击下一页跳转到第一页,点击结束后恢复自动循环

然后上代码

index.html

<div id="showDiv"> <img src="image.jpg" alt="The Photo" id="showImg" /> </div> <div class="btn"> <input id="btnF" type="button" value="上一页"/> <input id="btnR" type="button" value="下一页"/> </div>

style.css

#showDiv{ width: 200px; height: 230px; border-radius: 10px; overflow: hidden; margin: 10px auto; position: relative; } #showImg{ width: 600px; position: absolute; } .btn{ width: 200px; margin:0 auto; } #btnF{ float: left; } #btnR{ float: right; }

script.js

/*共享load*/ function addLoadEvent(fun){ var oldLoad = window.onload; if(typeof oldLoad != "function"){ window.onload = fun; }else{ window.onload = function(){ oldLoad(); fun(); } } } function getElement(){ /*获取img*/ var img = document.getElementById("showImg"); /*获取按钮*/ var up = document.getElementById("btnF"); var down = document.getElementById("btnR"); /*获取Left和Top*/ var left = parseInt(img.style.left); if(!left){ left = 0; } /*自动执行*/ img.goUp = setInterval(function(){ if(left == 0){ left = -400; }else{ left = left + 200; } img.style.left = left + "px"; },2000); /*当鼠标在图片上 停止*/ img.onmouseover = function(){ clearInterval(img.goUp); }; /*当鼠标移开时 继续*/ img.onmouseout = function(){ if(img.goUp){ clearInterval(img.goUp); } img.goUp = setInterval(function(){ if(left == 0){ left = -400; }else{ left = left + 200; } img.style.left = left + "px"; },2000); }; /*goUp("showImg",left);*/ /*绑定事件*/ up.onclick = function(){ /*点击时停止动画*/ clearInterval(img.goUp); if(left == 0){ left = -400; }else{ left = left + 200; } img.style.left = left + "px"; /*恢复*/ if(img.goUp){ clearInterval(img.goUp); } img.goUp = setInterval(function(){ if(left == 0){ left = -400; }else{ left = left + 200; } img.style.left = left + "px"; },2000); }; down.onclick = function () { /*点击时停止自动*/ clearInterval(img.goUp); if(left == -400){ left = 0; }else{ left = left-200; } img.style.left = left + "px"; /*恢复*/ if(img.goUp){ clearInterval(img.goUp); } img.goUp = setInterval(function(){ if(left == 0){ left = -400; }else{ left = left + 200; } img.style.left = left + "px"; },2000); }; } addLoadEvent(getElement);

至此,完成轮播图效果。

转载请注明原文地址: https://www.6miu.com/read-79987.html

最新回复(0)