まず、以下に示す JS 画像カルーセル効果を見てみましょう
具体的なアイデア:
1. ページをロードし、コンテナ全体、数値インデックスのすべての li と画像リストの ul を取得し、タイマーの変数と現在のインデックスを保存する変数インデックスを定義します
2. タイマーを追加し、2 秒ごとにインデックスをインクリメントし、画像切り替え関数を呼び出します
ヒント:
1. 指数は際限なく増加し続けることはできず、判断が必要です
2. 画像切り替え関数を呼び出すときは、インクリメントされたインデックスをパラメータとして渡す必要があります
3. 画像切り替え関数を定義します
ヒント:
1. 数値インデックスを使用してすべての li をスキャンし、各 li のクラスを削除します。
2. 渡されたインデックス値に従って対応する li を見つけ、それにクラスを追加して、それを現在のハイライトとして設定します。
3. 渡されたインデックス値に基づいて、画像が配置される ul の先頭の値を計算します
4. 渡されたパラメーター値
と等しくなるようにインデックスの値を変更します。
注: 画像が配置される ul の上部の値 =-index*単一画像の高さ (すべての画像は同じ高さである必要があります)
4. マウスがコンテナ全体を移動すると、画像の切り替えが停止し、そのままにして続行します
ヒント:
1. マウスがコンテナ全体の上をスライドするとタイマーをクリアします
2. マウスが離れてもタイマーを実行し続け、次の画像に切り替えます
5. 数字を含むすべての li をたどってインデックスを追加し、マウスをロールオーバーすると対応する画像に切り替わります。
マウスがスライドすると、画像切り替え関数が呼び出され、スライドする li のインデックスが渡されます。
具体的なコードは次のとおりです:
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> *{margin:0; padding:0; list-style:none;} .wrap{height:170px; width:490px; margin:60px auto; overflow: hidden; position: relative; margin:100px auto;} .wrap ul{position:absolute;} .wrap ul li{height:170px;} .wrap ol{position:absolute; right:5px; bottom:10px;} .wrap ol li{height:20px; width: 20px; background:#ccc; border:solid 1px #666; margin-left:5px; color:#000; float:left; line-height:center; text-align:center; cursor:pointer;} .wrap ol .on{background:#E97305; color:#fff;} </style> <script type="text/javascript"> window.onload=function(){ var wrap=document.getElementById('wrap'), pic=document.getElementById('pic').getElementsByTagName("li"), list=document.getElementById('list').getElementsByTagName('li'), index=0, timer=null; // 定义并调用自动播放函数 timer = setInterval(autoPlay, 2000); // 鼠标划过整个容器时停止自动播放 wrap.onmouseover = function () { clearInterval(timer); } // 鼠标离开整个容器时继续播放至下一张 wrap.onmouseout = function () { timer = setInterval(autoPlay, 2000); } // 遍历所有数字导航实现划过切换至对应的图片 for (var i = 0; i < list.length; i++) { list[i].onmouseover = function () { clearInterval(timer); index = this.innerText - 1; changePic(index); }; }; function autoPlay () { if (++index >= pic.length) index = 0; changePic(index); } // 定义图片切换函数 function changePic (curIndex) { for (var i = 0; i < pic.length; ++i) { pic[i].style.display = "none"; list[i].className = ""; } pic[curIndex].style.display = "block"; list[curIndex].className = "on"; } }; </script> </head> <body> <div class="wrap" id='wrap'> <ul id="pic"> <li><img src="1.jpg" alt=""></li> <li><img src="2.jpg" alt=""></li> <li><img src="3.jpg" alt=""></li> <li><img src="4.jpg" alt=""></li> <li><img src="5.jpg" alt=""></li> </ul> <ol id="list"> <li class="on">1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> </ol> </div> </body> </html>
上記はこの記事の全内容です。js 画像カルーセル効果の実装コードを共有しました。好みに応じて画像を変更して、独自の画像カルーセル効果を作成していただければ幸いです。