jQuery 圖片輪播

圖片輪播效果圖 如上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 }
所有js代碼
 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 }
所有CSS代碼
 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             
所有html代碼

難點:

1.setTimeout裏面的函數帶參數傳遞:

     setTimeout(function(){resetbgColor(obj);},3000); 

2.jQuery建立div的樣式設置問題,待解決

相關文章
相關標籤/搜索