圖片輪播效果圖 如上javascript
思路:css
1.每隔必定的時間切換一張圖片:javascript中的setTimeout()和setInterval()符合條件,注意二者之間的區別。
html
2.循環問題:定義一個全局變量num,每切換了一張圖片,num++,但由於是死循環,num可能無限大,用num=num%圖片個數,能夠保證num的值不大於圖片個數。java
關鍵代碼:jquery
1 //圖片與數字的輪播 2 function sonCarousel(){ 3 //隱藏全部的圖片,使全部的數字背景爲灰色 4 $("."+className).find("img").hide(); 5 $("."+className).find("span").removeClass("spanActivate").addClass("spanNoActivate"); 6 //$("."+className).find("span").css("background","#999");//同上效果 7 //顯示對應的圖片,使激活狀態的數字背景顏色爲紅色 8 $("."+className).find("img:eq("+currentNum+")").show(); 9 $("."+className).find("span:eq("+currentNum+")").removeClass("spanNoActivate").addClass("spanActivate"); 10 //$("."+className).find("span").css("background","#E4393C");//同上效果 11 //定時器,每一秒鐘改變一次 12 carouselTime=setTimeout(sonCarousel,1000); 13 //圖片序列++,實現輪換效果 14 currentNum++; 15 currentNum%=picNum; 16 17 }
3.以上兩點總結來講是:隱藏全部圖片,顯示編號爲num的圖片,setTimeout特定時間再次執行自己的函數,num++,num%=numapp
4.圖片編號css樣式思路:1>絕對定位,在圖片的右下角須要text-align:right;bottom:XXpx;position:absolute;ide
div的長度與寬度函數
2>每一個span的樣式,垂直,水平居中:height:22px;line-height:22px;width:22px;text-align:center;border-radius: 12px;爲每一個span作圓形,margin:0 1px;間隔this
1 .number{ 2 position: absolute; 3 text-align: right; 4 padding: 4px 10px; 5 z-index: 1; 6 bottom: 3px; 7 width: 650px; 8 height: 22px; 9 } 10 .pic span{ 11 display: inline-block; 12 margin: 0 1px; 13 text-align: center; 14 color: #FFFFFF; 15 border-radius: 12px ; 16 width: 22px; 17 height: 22px; 18 line-height: 22px; 19 cursor: pointer; 20 }
5.動態生成圖片編號:spa
1 //獲取圖片的張數 2 var picNum = $("." + className).find("img").length; 3 //建立顯示數字輪播的div 4 var spanDiv = $("<div class='number'></div>"); 5 for (var i = 1; i <= picNum; i++) { 6 var spanCurrent = $("<span >" + i + "</span>"); 7 spanDiv.append(spanCurrent); 8 } 9 //把建立好的數字輪播添加到圖片中去 10 spanDiv.appendTo("." + className);
6.點擊編號顯示相應的圖片:
1 //點擊數字顯示對應的圖片 2 $(".number span").click(function(){ 3 clearTimeout(carouselTime); 4 currentNum=this.innerHTML-1; 5 sonCarousel(); 6 });
1 //實現圖片輪播的效果 2 3 var currentNum=0; 4 var carouselTime; 5 function carousel(className) { 6 //獲取圖片的長度與寬度 7 var width=$("." + className).find("img").get(0).width; 8 var height=$("." + className).find("img").get(0).height; 9 $("." + className).css({ 10 "position":"absolute", 11 "width":width, 12 "height":height 13 }); 14 //獲取圖片的張數 15 var picNum = $("." + className).find("img").length; 16 //建立顯示數字輪播的div 17 var spanDiv = $("<div class='number'></div>"); 18 for (var i = 1; i <= picNum; i++) { 19 var spanCurrent = $("<span >" + i + "</span>"); 20 spanDiv.append(spanCurrent); 21 } 22 //把建立好的數字輪播添加到圖片中去 23 spanDiv.appendTo("." + className); 24 //圖片與數字的輪播 25 function sonCarousel(){ 26 //隱藏全部的圖片,使全部的數字背景爲灰色 27 $("."+className).find("img").hide(); 28 $("."+className).find("span").removeClass("spanActivate").addClass("spanNoActivate"); 29 //$("."+className).find("span").css("background","#999");//同上效果 30 //顯示對應的圖片,使激活狀態的數字背景顏色爲紅色 31 $("."+className).find("img:eq("+currentNum+")").show(); 32 $("."+className).find("span:eq("+currentNum+")").removeClass("spanNoActivate").addClass("spanActivate"); 33 //$("."+className).find("span").css("background","#E4393C");//同上效果 34 //定時器,每一秒鐘改變一次 35 carouselTime=setTimeout(sonCarousel,1000); 36 //圖片序列++,實現輪換效果 37 currentNum++; 38 currentNum%=picNum; 39 40 } 41 sonCarousel(); 42 //點擊數字顯示對應的圖片 43 $(".number span").click(function(){ 44 clearTimeout(carouselTime); 45 currentNum=this.innerHTML-1; 46 sonCarousel(); 47 }); 48 }
1 *{ 2 padding: 0; 3 margin: 0; 4 border: 0; 5 } 6 7 .number{ 8 position: absolute; 9 text-align: right; 10 padding: 4px 10px; 11 z-index: 1; 12 bottom: 3px; 13 width: 650px; 14 height: 22px; 15 } 16 .pic span{ 17 display: inline-block; 18 margin: 0 1px; 19 text-align: center; 20 color: #FFFFFF; 21 border-radius: 12px ; 22 width: 22px; 23 height: 22px; 24 line-height: 22px; 25 cursor: pointer; 26 } 27 .spanActivate{ 28 background-color: #E4393C; 29 } 30 .spanNoActivate{ 31 background-color: #999; 32 }
1 <!DOCTYPE html> 2 <html lang="zh-cn"> 3 <head> 4 <meta charset="utf-8" /> 5 <title></title> 6 <meta name="copyright" /> 7 <script type="text/javascript" src="jquery-1.9.1.js"></script> 8 <link rel="stylesheet" type="text/css" href="Carousel.css"> 9 <script type="text/javascript" src="Carousel.js"></script> 10 11 </head> 12 <body> 13 <div class="pic" > 14 <img src="img/1.jpg"> 15 <img src="img/2.jpg"> 16 <img src="img/3.jpg"> 17 <img src="img/1.jpg"> 18 <img src="img/2.jpg"> 19 <img src="img/3.jpg"> 20 21 </div> 22 <script type="text/javascript"> 23 $(document).ready(function(){ 24 carousel("pic"); 25 }); 26 </script> 27 </body> 28 </html> 29
難點:
1.setTimeout裏面的函數帶參數傳遞:
setTimeout(function(){resetbgColor(obj);},3000);
2.jQuery建立div的樣式設置問題,待解決