您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關使用js實現一個簡單的無縫輪播效果,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
具體內容如下
*{ margin: 0; padding: 0; } #box{ width: 500px; height: 200px; padding: 5px; margin: 50px auto; border: 1px solid #999999; } .inner{ width: 500px; height: 200px; overflow: hidden; position: relative; } ul,ol{ list-style: none; position: absolute; } ul{ width: 3000px; height: 200px; } li{ float: left; } ol{ right: 20px; bottom: 20px; } ol>li{ width: 25px; height: 25px; line-height: 25px; text-align: center; background-color: #fff; border-radius: 50%; margin-right: 10px; cursor: pointer; } ol>li.current{ background-color: orange; color: white; } .control{ display: none; } .control>span{ position: absolute; top: 50%; margin-top: -20px; display: inline-block; width: 25px; height: 40px; line-height: 40px; background-color: rgba(0,0,0,0.3); color: white; font-size: 20px; cursor: pointer; text-align: center; } .right{ right: 0; }
<div id="box"> <div class="inner"> <ul> <li><img src="image/1.jpg" alt=""></li> <li><img src="image/2.jpg" alt=""></li> <li><img src="image/3.jpg" alt=""></li> <li><img src="image/4.jpg" alt=""></li> <li><img src="image/5.jpg" alt=""></li> </ul> <ol> <li class="current">1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> </ol> <div class="control"> <span class="left"><</span> <span class="right">></span> </div> </div> </div>
var box=document.getElementById("box"); var ul=box.getElementsByTagName("ul")[0]; var ol=box.getElementsByTagName("ol")[0]; var olLiArr=ol.children; var control=box.getElementsByClassName("control")[0]; ul.appendChild(ul.children[0].cloneNode(true)); var index=0; var circleIndex=0; var timer=setInterval(autoPlay,2000); //鼠標移入移出 box.onmouseover=function () { clearInterval(timer); control.style.display="block"; }; box.onmouseout=function () { timer=setInterval(autoPlay,2000); control.style.display="none"; }; //小圓點 for (var i=0;i<olLiArr.length;i++) { olLiArr[i].index=i; olLiArr[i].onclick=function () { if(index===5){ ul.style.left=0; index=0; } for (var i=0;i<olLiArr.length;i++){ olLiArr[i].removeAttribute("class"); } this.setAttribute("class","current"); animate_constSpeed_x(ul,-this.index*500); index=this.index; circleIndex=this.index; } } //左右點擊 control.children[1].onclick=function () { autoPlay(); }; control.children[0].onclick=function () { index--; if (index<0){ ul.style.left=-2500+"px"; index=4; } animate_constSpeed_x(ul,-index*500); circleIndex--; if (circleIndex<0){ circleIndex=4; } for (var i=0;i<olLiArr.length;i++) { olLiArr[i].removeAttribute("class"); } olLiArr[circleIndex].setAttribute("class","current"); };
//自動輪播封裝 function autoPlay() { index++; if (index>5){ ul.style.left=0; index=1; } animate_constSpeed_x(ul,-index*500); circleIndex++; if (circleIndex>4){ circleIndex=0; } for (var i=0;i<olLiArr.length;i++) { olLiArr[i].removeAttribute("class"); } olLiArr[circleIndex].setAttribute("class","current"); } //勻速封裝 function animate_constSpeed_x(ele,endX) { clearInterval(ele.timer); var step=(endX-ele.offsetLeft)>0?10:-10; ele.timer=setInterval(function () { ele.style.left=ele.offsetLeft+step+"px"; console.log(1); if(Math.abs(endX-ele.offsetLeft)<=Math.abs(step)){ clearInterval(ele.timer); ele.style.left=endX+"px"; } },10) }
看完上述內容,你們對使用js實現一個簡單的無縫輪播效果有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。