Web制作 スライダー

Slickで横方向に流れ続ける無限ループスライダーを作る方法

横に流れ続ける無限ループスライダーってどうやるの?

今回はそんな疑問にお答えします。

ちなみにslickの記事は他にも10記事以上書いているので、よろしければ合わせてご覧下さい。

slickスライダー

横方向に流れ続ける無限ループスライダーを作るにはSlickを使う

スライダーを実装するのにはプラグインを使う人が多いと思いますが、今回はSlickというプラグインを使用します。

Slickの使い方に関しては以下の記事を参照下さい。

レスポンシブ対応のスライダープラグイン「slick」の使い方

 

コードの解説

まずHTMLですが、特に変わった点はありません。

<div class="slider">
  <div><img src="画像パス1" /></div>
  <div><img src="画像パス2" /></div>
  <div><img src="画像パス3" /></div>
  <div><img src="画像パス4" /></div>
  <div><img src="画像パス5" /></div>
  <div><img src="画像パス6" /></div>
</div>

CSSもimgのwidthを100%にしただけで、重要なのはjQueryの部分となります。

jQueryは以下の通りです。

$(function(){
  $('.slider').slick({
    autoplay: true, //自動でスクロール
    autoplaySpeed: 0, //自動再生のスライド切り替えまでの時間を設定
    speed: 5000, //スライドが流れる速度を設定
    cssEase: "linear", //スライドの流れ方を等速に設定
    slidesToShow: 4, //表示するスライドの数
    swipe: false, // 操作による切り替えはさせない
    arrows: false, //矢印非表示
    pauseOnFocus: false, //スライダーをフォーカスした時にスライドを停止させるか
    pauseOnHover: false, //スライダーにマウスホバーした時にスライドを停止させるか
    responsive: [
      {
        breakpoint: 750,
        settings: {
          slidesToShow: 3, //画面幅750px以下でスライド3枚表示
        }
      }
    ]
  });
});

1つずつ見ていきます。

 

autoplay: true

これはそのままですが、デフォルトがfalseなのでtrueにしないと自動で動きません。

 

autoplaySpeed: 0

これはスライドが切り替わってから次に動き出すまでの時間で、デフォルトでは3000ミリ秒となっています。

通常のスライダーは画像が切り替わったら何秒か止まって表示させてると思いますが、この数値がデフォルトでは3秒って事ですね。

今回は無限ループさせたいので、0にしています。

 

speed: 5000

これはスライドが流れる速度となります。

具体的には1枚の画像の端から端までの時間となります。

今回は5000ミリ秒(5秒)に設定したので、時間を計ってみて下さい。

ちなみに50ミリ秒とかにすると超高速になりますw

 

cssEase: "linear"

これは画像切り替えのイージングとなり、以下の種類があります。

  • ease
  • linear
  • ease-in
  • ease-out
  • ease-in-out

これは最初が早くて最後がゆっくりだったり動きに変化を付ける設定で、デフォルトはeaseになっていますが、今回は一定のスピードでループさせたいので等速で動くlinearにしています。

 

slidesToShow: 4

これは一度に表示するスライドの枚数です。

これはケースに応じて変更可能です。

 

swipe: false

これはスワイプ出来るようにするかという設定です。

デフォルトではtrueとなってスワイプできる設定なので、ここでは出来ない設定にしています。

 

arrows: false

これはスライド前後に表示される矢印ですが、無限ループでは不要なので非表示にしています(デフォルトではtrue)

 

pauseOnFocus: false

これはスライダーをフォーカス(クリック)した時に一時停止させるかどうかです。

デフォルトのtrueだとクリックしたら画像の端に来た時に一時停止してしまうので、falseにしてクリックされても流れ続けるようにしています。

 

pauseOnHover: false

これはスライダーにマウスを乗せた時に一時停止させるかどうかです。

これも停止させずに流し続けたいのでfalseにしています。

 

あとはレスポンシブの部分ですが、ここは無限ループとは関係ない所ですが、今回の例で言えば750pxを境にスライダーに表示される画像が4枚から3枚になるように設定しています。
ブログで見た際は750px以下だと思うので、スライドは3枚になっていると思います。

 

完成形

それでは最後に完成形を見てみましょう。

See the Pen
無限ループスライダー
by junpei (@junpei-sugiyama)
on CodePen.

左から右に流れるようにするには(逆向き)

スライダーはデフォルトで右から左に流れるようになっていますが、逆向きにすることも出来ます。

まずはsliderというclassを付けた所に dir="rtl" を追記します。

<div class="slider" dir="rtl">
  <div><img src="画像パス1" /></div>
  <div><img src="画像パス2" /></div>
  <div><img src="画像パス3" /></div>
  <div><img src="画像パス4" /></div>
  <div><img src="画像パス5" /></div>
  <div><img src="画像パス6" /></div>
</div>

そしてjQueryには次を追記します。

rtl: true,

※ここでjQueryにこのコードを追記しないとスライダーとして機能しなくなるので注意

 

全体で見るとこうなります。

$(function () {
  $(".slider").slick({
    autoplay: true, //自動でスクロール
    autoplaySpeed: 0, //自動再生のスライド切り替えまでの時間を設定
    speed: 5000, //スライドが流れる速度を設定
    cssEase: "linear", //スライドの流れ方を等速に設定
    slidesToShow: 4, //表示するスライドの数
    swipe: false, // 操作による切り替えはさせない
    arrows: false, //矢印非表示
    pauseOnFocus: false, //スライダーをフォーカスした時にスライドを停止させるか
    pauseOnHover: false, //スライダーにマウスホバーした時にスライドを停止させるか
    rtl: true, //スライダーを左から右に流す(逆向き)
    responsive: [
      {
        breakpoint: 750,
        settings: {
          slidesToShow: 3,
        },
      },
    ],
  });
});

こちらが逆向きの完成形です。

See the Pen
無限ループスライダー(逆向き)
by junpei (@junpei-sugiyama)
on CodePen.

-Web制作, スライダー
-