相關閱讀:
在網頁上經常可以看到有背景圖片可以自動淡入淡入切換的效果,非常漂亮,實用性也非常高。今天小編抽個時間跟大家分享基於jquery代碼實現圖片牆自動+手動淡入淡出切換效果,一起學習吧!
先給大家展示效果圖,如果大家覺得還不錯,請參考具體實現程式碼。
新增一個div(class=container),設定寬度和高度,這裡設定了寬800px,高450px。添加居中的定位。在div裡面加入一個ul(class="img")清單用來盛放圖片,設定ul裡面的li標籤position為absolute,這時圖片會重合在一起,同時設定display為none。圖片設定寬度和高度與container相同。在container裡面再增加一個ul列表用來盛放下面的一排數字,然後進行對應的定位和設定。增加兩個div:left和right,分別是左右兩個按鈕,進行對應的定位和設置,裡面的箭頭分別是大於號和小於號。
實現思路及原理介紹:
當滑鼠移到對應的數字上面的時候,用$(this).index()取得數字所在容器裡面的序號,然後將序號傳遞到eq()函數裡面取得li 標籤,然後加入函數fadeIn( );這樣隱藏的圖片就顯示出來了,同時調用sibling().fadeOut(),讓同級的兄弟節點隱藏起來,這樣之前顯示的圖片就隱藏了起來。
加入setInterval()函數,讓圖片每隔相同的時間轉換一次。
我覺得一個主要的問題就是自動切換和手動切換的衝突,當滑鼠移動到圖片上面的時候應該停止自動切換,這裡用的方法是:
為container添加hover函數,當滑鼠移動到container裡面的時候用clearInterval()函數去掉時間間隔函數,這樣當滑鼠移動到圖片上面的時候,圖片就不會切換了,當滑鼠移出的時候添加setInterval()函數。這樣圖片就能繼續切換了。
注意:i 和 t 需要設定成全域變量,這樣不同的函數才能共用。 i 表示目前顯示圖片的索引。 t 是setInterval的ID。當滑鼠移出的時候不用再var一個t了,只需:t=setInterval(time_fun,1500);即可。
eq(n):找出第n個元素
eg:$('li').eq(2).css('background-color', 'red');//設定第二個li標籤的背景顏色為紅色
index():找出該元素的索引值
有興趣的研究一下代碼:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-"> <title>jquery_img_switch</title> </head> <style type="text/css"> *{ margin: ; padding: ; } .container{ width: px; height: px; margin: px auto; position: relative; } .container .img{ list-style: none; /*position: absolute;*/ } .container .img li{ position: absolute; display: none; } .container .img img{ width: px; height: px; } .container .num{ position: absolute; list-style: none; font-size: ; bottom: px; width: %; text-align: center; } .container .num li{ width: px; height: px; background: rgba(,,,.); border-radius: %; color: #; display: inline-block; line-height: px; text-align: center; font-size: px; margin-right: px; cursor: pointer; } .left, .right{ width: px; height: px; text-align: center; line-height: px; background-color: rgba(,,,.); color: #fff; position: absolute; top: %; margin-top: -px; font-size: px; cursor: pointer; } .left{ left: px; } .right{ right: px; } .container .num .active{ background: rgba(,,,); color: #fff; } </style> <script type="text/javascript" src="../jquery-...min.js"></script> <script type="text/javascript"> var i=; var t; $(document).ready(function(){ $(".container .img li").eq(i).fadeIn().siblings().fadeOut(); $(".container .num li").on("mouseover",active); t=setInterval(time_fun,); $(".container").hover(in_fun,out_fun); $(".container .left").on("click",left_fun); $(".container .right").on("click",right_fun); }); function time_fun(){ i++; if(i==){ i=; } $(".container .num li").eq(i).addClass("active").siblings().removeClass("active"); $(".container .img li").eq(i).fadeIn().siblings().fadeOut(); } function in_fun(){ clearInterval(t); } function out_fun(){ t=setInterval(time_fun,); } function active(){ $(this).addClass("active").siblings().removeClass("active"); $(".container .img li").eq($(this).index()).fadeIn().siblings().fadeOut(); i=$(this).index(); } function left_fun(){ i--; if(i==-){ i=; } $(".container .num li").eq(i).addClass("active").siblings().removeClass("active"); $(".container .img li").eq(i).fadeIn().siblings().fadeOut(); } function right_fun(){ i++; if(i==){ i=; } $(".container .num li").eq(i).addClass("active").siblings().removeClass("active"); $(".container .img li").eq(i).fadeIn().siblings().fadeOut(); } </script> <body> <div class="container"> <ul class="img"> <li ><img src="../../Img/.jpg"></li> <li><img src="../../Img/.jpg"></li> <li><img src="../../Img/.jpg"></li> <li><img src="../../Img/.jpg"></li> <li><img src="../../Img/.jpg"></li> <li><img src="../../Img/.jpg"></li> <li><img src="../../Img/.jpg"></li> <li><img src="../../Img/.jpg"></li> <li><img src="../../Img/.jpg"></li> <li><img src="../../Img/.jpg"></li> </ul> <ul class="num"> <li class="active"></li> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> </ul> <div class="left"><</div> <div class="right">></div> </div> </body> </html>
以上是小編給大家帶來的jQuery代碼實現圖片牆自動+手動淡入淡出切換效果,希望對大家有所幫助,同時也非常感謝大家對腳本之家網站的支持!