こんにちは!のせっち@nosecchi01です。
Keen Sliderを使って、ナビメニューを押したら所定のindex番目へ飛ばすスライダーの実装方法を紹介します。
実際に見てみる
実際に見て、触ってみてもらった方が早いので、下記を開いてください。
ナビをクリックすると、同じ番号(index)のスライドへ飛ぶことが確認できます。
コード解説
javascript部分を解説していきます。
肝となる部分はこちらです。
function moveToIndex(slider) {
const navLists = Array.from(document.querySelectorAll(".nav__list-item"));
navLists.forEach((li) => {
li.addEventListener("click", (e) => {
const index = navLists.findIndex((list) => list === e.target);
slider.moveToIdx(index);
});
});
}
Keen Sliderは、第三引数に関数を指定して、様々なカスタマイズを行うことができます。
上記のコードがindex番目に飛ばす関数になります。
分解してみる
分解して見ていきましょう。
function moveToIndex(slider) {
const navLists = Array.from(document.querySelectorAll(".nav__list-item"));
navLists.forEach((li) => {
li.addEventListener("click", (e) => {
const index = navLists.findIndex((list) => list === e.target);
console.log(index); // console.logしてみる
});
});
}
.nav__list-item
を取得して、forEach
で回します。
次に、findIndex
でクリックした要素のindex番号を探します。
ここで試しに、console.log(index)
としてみてください。
クリックした要素のindex番目が取得できるはずです。
ここまでで、ナビ(<li>
)の何番目をクリックしたか、がわかります。
後は、そのindex番号目に飛ばすだけです。
slider.moveToIdx(index);
Keen SliderにはmoveToIdx
というファンクションが用意されています。
第一引数にindexを取るので、先ほど取得したconst index
を代入しています。
これで、指定番目のスライドに飛ばすことができます!
おまけ:Slickでの方法も解説しています。
同じことをslickで行う方法も解説していますのでSlickを使いたい方はこちらをどうぞ!
まとめ
- Keen Sliderで指定番目へ飛ばすには、
findIndex
でクリックした要素のindexを取得するmoveToIdx
ファンクションを使って、index番目へ移動させる。