関連記事:
画像カルーセル効果を実装するための Jquery コード (1)
Web ページの背景画像に自動的にフェードインおよびフェードアウトする効果がよく見られますが、これは非常に美しく、非常に実用的です。今日は、jquery コードに基づいたピクチャー ウォールの自動 + 手動フェードインとフェードアウトの切り替え効果を共有します。一緒に学びましょう。
最初にレンダリングを示しますが、これが良いと思われる場合は、具体的な実装コードを参照してください。
div (class=container) を追加し、幅と高さを設定します。ここでは、幅は 800px、高さは 450px です。中央配置を追加します。画像を保持するための div に ul (class="img") リストを追加します。ul 内の li タグの位置を絶対値に設定します。このとき、画像は重なって表示されません。画像は幅と高さをコンテナと同じに設定します。下の数字の行を保持する別の ul リストをコンテナに追加し、それに応じて配置して設定します。 2 つの div を追加します: left と right (それぞれ左ボタンと右ボタン)、内側の矢印はそれぞれ大なり記号と小なり記号です。
実装のアイデアと原則の紹介:
マウスが対応する番号の上に移動すると、$(this).index() を使用してその番号が配置されているコンテナ内のシリアル番号を取得し、そのシリアル番号を eq() 関数に渡して li を取得します。このようにして、隠されたピクチャが表示され、同時に sibling().fadeOut() が呼び出され、同じレベルの兄弟ノードが非表示になります。画像は隠されています。
画像も同時に変更するsetInterval()関数を追加します。
大きな問題は、自動切り替えと手動切り替えの間の競合だと思います。ここで使用される方法は、マウスが画像上に移動したときに停止する必要があります。
注: i と t は、異なる関数を共有できるようにグローバル変数として設定する必要があります。 i は現在表示されている画像のインデックスを表します。 t は setInterval の ID です。マウスが外に移動するときは、 var a t を実行する必要はなく、単に t=setInterval(time_fun,1500); だけです。
のインデックス値を検索します。
<!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>