スライダーはスライドが切り替わるだけでなく、常に定速で流れ続ける無限ループスライダーも作る事が出来ます。
今回は、slickを使って無限ループスライダーを作る方法を、コードとデモを使って解説していきます(逆方向も可能)
slickの基本的な使い方と、slickを使うのに必要なjQueryの使い方については以下の記事を参照下さい。
レスポンシブ対応のスライダープラグイン slickの使い方
続きを見る
【初心者向け】jQueryとは?CDNを使った本体の読み込み方も分かりやすく解説
続きを見る
またslickには色々カスタマイズが出来るオプションがあるので、そちらも合わせて活用すると実装出来るスライダーの幅が広がります。
【slick】カスタマイズ用オプションまとめ一覧
続きを見る
- 完全無料
- 30日間でWeb制作を学べる
- 現役エンジニアへの質問無制限
- オンラインの動画学習なので時間場所を問わず勉強可能
- 最大4回の学習サポート面談
- 毎日人数制限ありの先着制
(有料になっていたらすいません🙇♂️)
slickで横方向に流れ続ける無限ループスライダーを作る方法
スライダーを実装するにはプラグインを使う人が多いと思いますが、今回はslickというプラグインを使用します(Swiperでも可能)
HTMLのコード
HTMLの書き方ですが、特に変わった点はありません。
<div class="slider">
<div><img src="画像パス1" alt="" /></div>
<div><img src="画像パス2" alt="" /></div>
<div><img src="画像パス3" alt="" /></div>
<div><img src="画像パス4" alt="" /></div>
<div><img src="画像パス5" alt="" /></div>
<div><img src="画像パス6" alt="" /></div>
</div>
CSSもimgのwidthを100%にしただけで、重要なのはjQueryの部分となります。
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秒(3000ミリ秒)って事ですね。
今回は無限ループさせたいので、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にしています。
responsive
レスポンシブは無限ループとは無関係ですが、今回の例で言えば750pxを境にスライダーに表示される画像が4枚から3枚になるように設定しています。
ブログで見た際は750px以下だと思うので、スライドは3枚になっているかと思います。
slickの無限ループスライダーのサンプル(デモ)
それでは、最後にサンプル(デモ)を見てみましょう。
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.
また、もう一つスライダーで有名なプラグイン、Swiperを使った場合の無限ループスライダーはこちらで解説しています。
【Swiper】横方向に流れ続ける無限ループスライダーを作る方法
続きを見る
関連記事slick記事一覧
関連記事Swiper記事一覧
関連記事Splide記事一覧