Web制作 コーディング スライダー

slickスライダーで特定のスライドだけ表示時間を変える方法

スライダーで1枚ごとに表示時間を変えることって出来る?

普通のスライダーは全部表示時間が同じですが、1枚目だけ長くしたい時などたま〜にあります。

今回はslickを使ってその方法をご紹介します。

slickスライダーで特定のスライドだけ表示時間を変える方法

まずはデモを見てみます。

See the Pen
slick(時間調整)
by junpei (@junpei-sugiyama)
on CodePen.

1枚目のスライドはこの画像です。

そして今回設定したのは、

  • 1枚目の初回は3000ミリ秒
  • 1枚目の2週目以降は100ミリ秒
  • 3枚目は500ミリ秒
  • それ以外は2000ミリ秒

となります(Rerunをクリックすればリロードされます)

 

コード解説

HTMLとCSSは特に変わった所はないので省略します(デモのHTMLとCSSをクリックすれば見れます)

今回のポイントとなるのはこちらのjQueryです。

$(".slider").slick({
  autoplay: true,
  autoplaySpeed: 3000 // 1枚目初回の秒数
})
.on("afterChange", function(event, slick, currentSlide) {
  switch (currentSlide){
    case 0:
      // 1枚目2週目以降の秒数
      $(this).slick("slickSetOption", "autoplaySpeed", 100);
      break;
    case 2:
      // 3枚目の秒数
      $(this).slick("slickSetOption", "autoplaySpeed", 500);
      break;
    default:
      // その他の秒数
      $(this).slick("slickSetOption", "autoplaySpeed", 2000);
      break;
    }
});

3行目

autoplaySpeed: 30001枚目の初回の秒数を設定します(単位はミリ秒)

ファーストビューなどに実装したスライダーで、1枚目だけ表示時間を長くしたいという事はあると思います。

2週目以降の1枚目のスライドの表示時間はこの後設定します。

 

5行目

afterChangeはスライドが切り替わった後に発生するイベントです。

つまり2枚目のスライド以降に発生するイベントになります。

5行目以降に1枚目のスライドの時間を設定していますが、1枚目の初回のみafterChangeは適用されないので、3行目で設定しています。

 

6行目以降

currentSlideに表示されているスライド番号が入ります。

それをswitch文を使って指定したスライドに対して時間を指定しています(currentSlidehは指定したオプションの値を変えるメソッド)

番号は0から始まるので、1枚目のスライドはcase 0となります。

 

まとめ

スライドの表示時間で指定出来るのは、

  • 1枚目の初回
  • 1枚目の2周目以降
  • 1枚目以外の指定した番号
  • 指定した番号以外

となります。

以上です。

-Web制作, コーディング, スライダー
-