例えばパソコンでは画像を3枚横並びにして、スマホでは横並びだと幅が狭いのでスライダーにしたい、という事はあると思います。
そこで今回はSplideでスマホのみスライダーにする方法を解説します。
Splideの基本的な使い方についてはこちらの記事を参照下さい。
【最新】Splideスライダーの使い方とオプション一覧・カスタマイズ方法を解説
続きを見る
(有料になっていたらすいません🙇♂️)
Splideでスマホだけスライダーにする方法(ブレイクポイント切り替え)
まずは基本となるスライダーを見てみましょう。
See the Pen
Splide:基本形 by junpei (@junpei-sugiyama)
on CodePen.
前後の矢印、ページネーションが表示されているシンプルなスライダーです。
これをPCでは3枚表示にさせ、スマホでは1枚表示のスライダーにしたいと思います。
ちなみにスマホというのはデバイスで判断するのではなく、ブレイクポイントで判断します(今回は500px未満で切り替え)
コード解説
それではコードを解説していきます。
HTML
まずHTMLはこちらです。
<div class="splide" role="group" 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はこちらです。
/* PC時のスタイル */
.splide.is-initialized:not(.is-active) .splide__list {
display: grid;
gap: 16px;
grid-template-columns: repeat(3, 1fr);
}
/* スライドのサイズ調整 */
.splide__slide img {
height: auto;
width: 100%;
}
スマホの時はスライダーにするのでそのままでも大丈夫ですが、パソコン用のスタイルを書く必要があります。
今回は横並びにdisplay: grid;
を使っていますが、display: flex;
にして.splide__slide
でflex-shrink: unset;
でもOKです(他にも方法あるかも知れません)
JavaScript
そしてJavaScriptはこちらです。
const splide = new Splide(".splide", {
autoplay: true, // 自動再生
type: "loop", // ループさせる
pauseOnHover: false, // カーソルが乗ってもスクロールを停止させない
pauseOnFocus: false, // 矢印をクリックしてもスクロールを停止させない
interval: 3000, // 自動再生の間隔
speed: 2000, // スライダーの移動時間
destroy: true, // スライダーを破棄
breakpoints: {
500: {
destroy: false, // 500px未満でスライダー開始
},
},
}).mount();
JavaScriptのポイントはdestroy: true
とbreakpoints
のdestroy: false
になります。
ここで画面幅500px以上の時はスライダーを無しにして、500px未満の時はスライダーにしています。
デモ
そしてこちらがデモになります。
See the Pen
Splide(スマホだけスライダー) by junpei (@junpei-sugiyama)
on CodePen.
パソコンで見てる場合は左上のHTML・CSS・JSをクリックして画面幅を狭くすると、スライダーになるのが確認できます(もう一度クリックすればスライダーじゃなくなります)
まとめ
今回はSplideでブレイクポイントの切り替えでスマホだけスライダーにする方法を解説してきました。
destroy
の設定を逆にすればパソコンだけスライダーにすることも可能です(あまりやらないと思いますが)
以上になります。
関連記事slick記事一覧
関連記事Swiper記事一覧
関連記事Splide記事一覧