Splide Web制作 スライダー

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

2023年3月6日

※ 当サイトではアフィリエイト広告を利用しています

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

スライダーはスライドが切り替わるだけでなく、常に定速で流れ続ける無限ループスライダーも作る事が出来ます。

今回はSplideを使って無限ループスライダーを作る方法をコードとデモを使って解説していきます(逆方向も可能)

Splideの基本的な使い方についてはこちらの記事を参照下さい。

あわせて読みたい
【2023年最新】Splideの使い方とよく使うオプション・カスタマイズ方法を解説
【最新】Splideスライダーの使い方とオプション一覧・カスタマイズ方法を解説

続きを見る

じゅんぺいブログは、Web制作コーディングWordPress制作)の技術記事を中心に、約500記事公開しています。ぜひ他の記事も参考にしてみてください!
完全無料のプログラミングスクール『ZeroPlus Gate』
30日間でWeb制作を学べる無料のプログラミングスクールがこちら
いきなり数十万するプログラミングスクールは厳しい・・・という人のお試しに最適です。
現在は無料ですがいつ有料になるか分からないので、気になる方はお早めに👇
(有料になっていたらすいません🙇‍♂️)

\ 完全無料 /

ZeroPlus Gate公式サイト

毎日先着制!

Splideで横方向に流れ続ける無限ループスライダー(自動スクロール)を作る方法

まずは基本となるスライダーを見てみましょう。

See the Pen
Splide:基本形
by junpei (@junpei-sugiyama)
on CodePen.

今回は無限ループスライダーなので、矢印とページネーションは削除します。

それではこれを無限ループスライダーにしていきます。

手順は以下の通りです。

簡単な流れ

  • 拡張機能『AutoScroll Extension』を読み込む
  • スライダーの基本形を書く
  • オプションで調整

それでは解説していきます。

 

拡張機能のAutoScroll Extensionの導入方法

Splideでは無限ループさせることを『自動スクロール』と呼んでいますが、これを実装するには拡張機能の『AutoScroll Extension』が必要になります。

これはライブラリの導入と同じく、主に以下の方法になります。

  • CDNで読み込む
  • ファイルをダウンロードして読み込む

 

CDNで読み込む

まずはCDNで読み込む方法です。

こちらがそのコードです。

<script src="https://cdn.jsdelivr.net/npm/@splidejs/splide-extension-auto-scroll@0.5.3/dist/js/splide-extension-auto-scroll.min.js"></script>

body閉じタグの直前あたりで読み込みましょう。

<!DOCTYPE html>
<html lang="ja">
  <head>
    <title>タイトル</title>
    <!-- SplideのCDNファイル(CSS) -->
    <link
      rel="stylesheet"
      href="https://cdn.jsdelivr.net/npm/@splidejs/splide@4.1.4/dist/css/splide.min.css"
    />
  </head>
  <body>
    <main></main>
    <footer></footer>
    <!-- SplideのCDNファイル(js) -->
    <script src="https://cdn.jsdelivr.net/npm/@splidejs/splide@4.1.4/dist/js/splide.min.js"></script>
    <!-- Auto Scrollエクステンション -->
    <script src="https://cdn.jsdelivr.net/npm/@splidejs/splide-extension-auto-scroll@0.5.3/dist/js/splide-extension-auto-scroll.min.js"></script>
  </body>
</html>

CDNのコードはこちらのページに載っています。

https://www.jsdelivr.com/package/npm/@splidejs/splide-extension-auto-scroll

 

ファイルをダウンロード

ファイルをダウンロードする場合は、以下のページからダウンロードします。

https://github.com/Splidejs/splide-extension-auto-scroll

AutoScroll Extensionダウンロード

AutoScroll Extensionダウンロード

使うファイルは『dist / js / splide-extension-auto-scroll.min.js』になります。

splide-extension-auto-scroll.min.js

splide-extension-auto-scroll.min.js

あとはCDNと同じようにbody閉じタグ直前あたりで読み込めばOKです。

 

自動スクロールを使ったスライダーのコード解説

AutoScroll Extensionを導入したら、スライダーの基本となるコードを書いていきましょう。

 

HTMLの書き方

HTMLは特に基本形と変わった所はありませんが、以下のようになります。

<div class="splide" aria-label="無限ループスライダー">
  <div class="splide__track">
    <div class="splide__list">
      <div class="splide__slide">
        <img src="画像パス1" alt="" />
      </div>
      <div class="splide__slide">
        <img src="画像パス2" alt="" />
      </div>
      <div class="splide__slide">
        <img src="画像パス3" alt="" />
      </div>
    </div>
  </div>
</div>

 

CSSの書き方

CSSは画像のサイズだけ揃えておきます。

.splide__slide img {
  height: auto;
  width: 100%;
}

 

JavaScriptの書き方

それでは本題となるJavaScriptの書き方を解説していきます。

Splideを使う最小限のコードは以下になりますが、

new Splide(".splide").mount();

AutoScroll Extensionを使う場合は以下のように書きます。

new Splide(".splide").mount(window.splide.Extensions);

一旦他のオプションは書かずにこれだけで見てみます。

See the Pen
Splide:無限ループ
by junpei (@junpei-sugiyama)
on CodePen.

しかしこの状態だと、

  • カーソルを載せると止まる
  • 最後のスライドで止まる(ループしない)

など問題があり、また無限ループにはなっていません。

そこでこれからオプションを追加して完成させていきます。

 

オプションを追加して無限ループさせる

それでは無限ループにさせたり、いくつかオプションを追加していきます。

自動スクロールでオプションを追加するときの書き方はこちらになります。

const options = {
  // 通常のオプション
  autoScroll: {
    // 自動スクロールのオプション
  },
};
const splide = new Splide(".splide", options);
splide.mount(window.splide.Extensions);

それでは今回追加するオプションを1つずつ解説していきます。

 

speed(スクロールの速度)

これはそのままですが、スクロールの速度を設定します。

初期値は1で数字が大きくなるほど早くなり、遅くしたい場合は小数点にすればOKです。

const options = {
  autoScroll: {
    speed: 0.5, // スクロール速度
  },
};
const splide = new Splide(".splide", options);
splide.mount(window.splide.Extensions);

 

pauseOnHover(カーソルが乗ったときのスクロール停止設定)

これはスライダーの上にマウスカーソルが乗ったときに、スクロールを停止するかどうかを決定します。

初期値はtrue(停止する)になっているので、今回はfalseにしてスクロールを停止させないようにします。

const options = {
  autoScroll: {
    pauseOnHover: false, // カーソルが乗ってもスクロールを停止させない
  },
};
const splide = new Splide(".splide", options);
splide.mount(window.splide.Extensions); 

 

loop(ループさせる)

これはループさせるかどうかで、初期値はslideなのでloopにします。

const options = {
  type: "loop", // ループさせる
};
const splide = new Splide(".splide", options);
splide.mount(window.splide.Extensions); 

 

arrows(矢印ボタン)

これは次へ前への矢印ボタンを表示するかどうかで、初期値はtrueで表示されるので今回はfalseにして非表示にします。

const options = {
  arrows: false, // 矢印ボタンを非表示
};
const splide = new Splide(".splide", options);
splide.mount(window.splide.Extensions); 

 

pagination(ページネーション)

これはページネーション(ドットインジケーター)を表示するかどうかで、初期値はtrueで表示されるので今回はfalseにして非表示にします。

const options = {
  pagination: false, // ページネーションを非表示
};
const splide = new Splide(".splide", options);
splide.mount(window.splide.Extensions); 

 

drag(ドラッグでスライドを動かす設定)

これはマウスカーソルのドラッグでスライドを動かせるようにするかどうか設定するオプションで3つの種類があります。

  • true:ドラッグを有効にする(初期値)
  • false:ドラッグを無効にする
  • free:フリードラッグモードを有効にする

truefreeの違いは文章では分かりにくいと思うので、実際にドラッグしてみて下さい(これは通常のスライダーです)

まずはこちらが通常のドラッグモード(drag未設定)

See the Pen
Untitled
by junpei (@junpei-sugiyama)
on CodePen.

そしてこちらがフリーラドラッグモード。

See the Pen
Untitled
by junpei (@junpei-sugiyama)
on CodePen.

通常のドラッグモードはドラッグすると次のスライドにピッタリ移動しますが、フリードラッグモードはそうなりません。

今回はフリードラッグモードを設定します。

const options = {
  drag: "free", // フリードラッグモード
};
const splide = new Splide(".splide", options);
splide.mount(window.splide.Extensions); 

ちなみにtruefalseはそのままで大丈夫ですが、freeは"free"とダブルクォーテーションで囲む必要があります。

 

gap(スライド間の余白)

これはスライド間の余白になります。

初期値は0でピッタリとくっついているので、今回は20に設定します。

ただの数値なら単位はpxですが、emなども設定可能です("2em"などダブルクォーテーションで囲む)

const options = {
  gap: 20, // スライド間の余白
};
const splide = new Splide(".splide", options);
splide.mount(window.splide.Extensions); 

 

perPage(1ページに何枚表示するか)

これは1ページに何枚表示するか設定するオプションで、初期値は1なので今回は3枚表示にします。

const options = {
  perPage: 3, // 表示するスライドの枚数
};
const splide = new Splide(".splide", options);
splide.mount(window.splide.Extensions); 

 

fixedWidth(スライドの幅)

これはスライドの幅を設定するオプションで今回は設定しませんが、例えば100と設定したら画面幅に関わらずスライドの幅は100pxになります。

数字だけなら単位はpxになりますが、vw%も使えます("50%"などダブルクォーテーションで囲む)

設定する場合はこのように書きます。

const options = {
  fixedWidth: 300, // スライドの幅(px)
};
const splide = new Splide(".splide", options);
splide.mount(window.splide.Extensions); 

また、このオプションを設定すると先ほどのperPageは無効になります。

 

breakpoints(レスポンシブ)

これはブレークポイントを設定して、PCでは3枚、スマホでは1枚という感じで設定できます。

const options = {
  perPage: 3, // 表示するスライドの枚数
  breakpoints: {
    500: {
      perPage: 1, // 画面幅500px未満で表示枚数1枚
      gap: 0, // 画面幅500px未満でスライド間の余白0
    },
  },
};
const splide = new Splide(".splide", options);
splide.mount(window.splide.Extensions);

この場合は画面幅が500px以上でスライド3枚、500px未満でスライド1枚になります(Swiperとは数字が逆なので注意)

さらに1枚になった時はスライド間の余白を0にしています。

 

横方向に流れ続ける無限ループスライダーのデモ

そしてこちらが今回ご紹介してきたオプションを追加したデモになります。

See the Pen
Splide:無限ループ
by junpei (@junpei-sugiyama)
on CodePen.

左上のHTML・CSS・JSをクリックすると、ブレークポイントのオプションによって表示されるスライドが1枚になります。

コードはこちらです。

const options = {
  type: "loop", // ループさせる
  arrows: false, // 矢印ボタンを非表示
  pagination: false, // ページネーションを非表示
  drag: false, // ドラッグ無効
  gap: 20, // スライド間の余白
  perPage: 3, // 表示するスライドの枚数
  breakpoints: {
    500: {
      perPage: 1, // 画面幅500px未満で表示枚数1枚
      gap: 0, // 画面幅500px未満でスライド間の余白0
    },
  },
  autoScroll: {
    speed: 0.5, // スクロール速度
    pauseOnHover: false, // カーソルが乗ってもスクロールを停止させない
  },
};
const splide = new Splide(".splide", options);
splide.mount(window.splide.Extensions);

 

逆方向(左から右)にする方法

デフォルトではスライドは右から左に流れていきますが、以下のオプションを書くと逆になります。

const options = {
  direction: "rtl", // スライドの方向を左から右
};
const splide = new Splide(".splide", options);
splide.mount(window.splide.Extensions);

こちらがデモになります。

See the Pen
Splide:無限ループ(逆方向)
by junpei (@junpei-sugiyama)
on CodePen.

まとめ

今回はSplideを使った無限ループスライダーの作り方を解説してきました。

slickやSwiperと違って拡張機能を使う必要があるので、ちょっと面倒に感じるかも知れませんね。

あとはオプションを使ってイメージ通りのスライダーに調整していきましょう。

以上になります。

関連記事slick記事一覧
関連記事Swiper記事一覧
関連記事Splide記事一覧

この記事が役に立ったと思ったら、シェアボタンからX(旧Twitter)などにシェアすると、いいねされてフォロワーが増えたりすることがあるよ!

 

  • この記事を書いた人

じゅんぺい

37歳からWeb制作とブログ開始。Web制作歴5年目でコーディングとWordPressオリジナルテーマ制作が中心。これまで120件以上を納品。当ブログ月間最高15万PVで、370記事以上はWeb制作の技術記事。コンテンツ販売→累計売上1200万円&1500部超え。X(旧Twitter)フォロワー7200人以上。2024年3月からブログの経験を活かしてライターとしても活動を開始。

-Splide, Web制作, スライダー