使用JS實(shí)現(xiàn)圖片輪播的實(shí)例(前后首尾相接)
最近各種跑面試,終于還是被問(wèn)到這個(gè),一腦子漿糊,當(dāng)時(shí)沒(méi)想出來(lái)首尾相接怎么搞,回來(lái)之后研究了一波,終于搞出來(lái)了,不多說(shuō),直接看代碼
代碼參考了一位已經(jīng)寫(xiě)好了圖片輪播功能的(再次表示感謝),但是沒(méi)有首尾相接的功能,本人在此基礎(chǔ)上增加了首尾相接功能。
效果如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>圖片輪播</title> <style type="text/css"> body,div,ul,li,a,img{margin: 0;padding: 0;} ul,li{list-style: none;} a{text-decoration: none;} #wrapper{ position: relative; margin: 30px auto; /* 上下邊距30px,水平居中 */ width: 400px; height: 200px; } #banner{ position:relative; width: 400px; height: 200px; overflow: hidden; } .imgList{ position:relative; width:2000px; height:200px; z-index: 10; overflow: hidden; } .imgList li{float:left;display: inline;} #prev, #next{ position: absolute; top:80px; z-index: 20; cursor: pointer; opacity: 0.2; filter:alpha(opacity=20); } #prev{left: 10px;} #next{right: 10px;} #prev:hover, #next:hover{opacity: 0.5;filter:alpha(opacity=50);} </style> </head> <body> <div id="wrapper"><!-- 最外層部分 --> <div id="banner"><!-- 輪播部分 --> <ul class="imgList"><!-- 圖片部分 --> <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><img src="./img/1.jpg" width="400px" height="200px" alt="1"></a></li> <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><img src="./img/2.jpg" width="400px" height="200px" alt="2"></a></li> <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><img src="./img/3.jpg" width="400px" height="200px" alt="3"></a></li> <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><img src="./img/4.jpg" width="400px" height="200px" alt="4"></a></li> <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><img src="./img/5.jpg" width="400px" height="200px" alt="5"></a></li> </ul> <img src="./img/prev.png" width="40px" height="40px" id="prev"> <img src="./img/next.png" width="40px" height="40px" id="next"> </div> </div> <script type="text/javascript" src="./js/jquery-3.2.1.min.js"></script> <script type="text/javascript"> var curIndex = 0, //當(dāng)前index imgLen = $(".imgList li").length; //圖片總數(shù) $(".imgList").css("width", (imgLen+1)*400+"px"); // 定時(shí)器自動(dòng)變換3秒每次 var autoChange = setInterval(function(){ if(curIndex < imgLen-1){ curIndex ++; }else{ curIndex = 0; } //調(diào)用變換處理函數(shù) changeTo(curIndex); },3000); //左箭頭滑入滑出事件處理 $("#prev").hover(function(){ //滑入清除定時(shí)器 clearInterval(autoChange); }, function(){ //滑出則重置定時(shí)器 autoChangeAgain(); }); //左箭頭點(diǎn)擊處理 $("#prev").click(function(){ //根據(jù)curIndex進(jìn)行上一個(gè)圖片處理 // curIndex = (curIndex > 0) ? (--curIndex) : (imgLen - 1); if (curIndex == 0) { var element = document.createElement("li"); element.innerHTML = $(".imgList li")[imgLen - 1].innerHTML; // $(".imgList li")[imgLen - 1].remove(); $(".imgList").prepend(element); $(".imgList").css("left", -1*400+"px"); changeTo(curIndex); curIndex = -1; } else if (curIndex == -1) { $(".imgList").css("left", -(imgLen-1)*400+"px"); curIndex = imgLen-2; $(".imgList li")[0].remove(); changeTo(curIndex); } else { --curIndex; changeTo(curIndex); } }); //右箭頭滑入滑出事件處理 $("#next").hover(function(){ //滑入清除定時(shí)器 clearInterval(autoChange); }, function(){ //滑出則重置定時(shí)器 autoChangeAgain(); }); //右箭頭點(diǎn)擊處理 $("#next").click(function(){ // curIndex = (curIndex < imgLen - 1) ? (++curIndex) : 0; console.log(imgLen); if (curIndex == imgLen-1) { var element = document.createElement("li"); element.innerHTML = $(".imgList li")[0].innerHTML; // $(".imgList li")[0].remove(); $(".imgList").append(element); ++curIndex; } else if (curIndex == imgLen) { curIndex = 0; $(".imgList").css("left", "0px"); $(".imgList li")[imgLen].remove(); curIndex++; } else { ++curIndex; } changeTo(curIndex); }); //清除定時(shí)器時(shí)候的重置定時(shí)器--封裝 function autoChangeAgain(){ autoChange = setInterval(function(){ if(curIndex < imgLen-1){ curIndex ++; }else{ curIndex = 0; } //調(diào)用變換處理函數(shù) changeTo(curIndex); },3000); } function changeTo(num){ var goLeft = num * 400; $(".imgList").animate({left: "-" + goLeft + "px"},500); } </script> </body> </html>
以上這篇使用JS實(shí)現(xiàn)圖片輪播的實(shí)例(前后首尾相接)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
瀏覽器圖片選擇預(yù)覽、旋轉(zhuǎn)、批量上傳的JS代碼實(shí)現(xiàn)
這篇文章主要介紹了瀏覽器圖片選擇預(yù)覽、旋轉(zhuǎn)、批量上傳的JS代碼實(shí)現(xiàn),有需要的朋友可以參考一下2013-12-12JS+CSS實(shí)現(xiàn)可以凹陷顯示選中單元格的方法
這篇文章主要介紹了JS+CSS實(shí)現(xiàn)可以凹陷顯示選中單元格的方法,實(shí)例分析了javascript操作css的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03Google排名中的10個(gè)最著名的 JavaScript庫(kù)
本文,我們將使用 Google 搜索出排名前 10 位的 JavaScript 庫(kù),并對(duì)它們逐一進(jìn)行介紹。2010-04-04JavaScript?canvas繪制動(dòng)態(tài)圓環(huán)進(jìn)度條
這篇文章主要為大家詳細(xì)介紹了JavaScript?canvas繪制動(dòng)態(tài)圓環(huán)進(jìn)度條,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06Javascript 完美運(yùn)動(dòng)框架(逐行分析代碼,讓你輕松了運(yùn)動(dòng)的原理)
這篇文章主要介紹了Javascript 完美運(yùn)動(dòng)框架,逐行分析代碼,讓你輕松了運(yùn)動(dòng)的原理,需要的朋友可以參考下2015-01-01