通常スライダーは、
- 矢印ボタンをクリック
- ページネーションをクリック
- スワイプ
- ドラッグ
などをしてスライドさせますが、今回はマウスホイールでスクロールして縦方向にスライドさせる方法をご紹介します。
Splideの基本的な使い方についてはこちらの記事を参照下さい。
【最新】Splideスライダーの使い方とオプション一覧・カスタマイズ方法を解説
続きを見る
(有料になっていたらすいません🙇♂️)
Splideスライダーをマウスホイールでスクロールして縦方向にスライドさせる方法
まずは基本となるスライダーを見てみましょう。
See the Pen
Splide:基本形 by junpei (@junpei-sugiyama)
on CodePen.
前後の矢印、ページネーションが表示されているシンプルなスライダーです。
これを縦方向にして、マウスホイールでスクロールしてスライドさせていきます。
コード解説
それではコードを解説していきます。
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はこちらです。
/* スライドのサイズ調整 */
.splide__slide img {
height: auto;
width: 100%;
}
これも基本形と同じです。
JavaScript
そしてJavaScriptはこちらです。
new Splide(".splide", {
direction: "ttb", // スライダーの方向を指定
heightRatio: 0.65, // スライドの高さをスライダーの幅に対する割合で指定
wheel: true, // マウスホイールによるスライダーの移動を有効にする
waitForTransition: true, // スライダーが移動中にも操作を受け付ける
}).mount();
スライダーの方向はdirection
で設定します。
- "ltr" → 左から右
- "rtr" → 右から左
- "ttb" → 上から下
高さはheightRatio
を設定しないと低くなってしまいます(もしくはheight
でheight: "10rem"
などでもOK)
マウスホイールによるスライダーの移動を有効にするのはwheel: true
でOKです。
そして最後のがちょっと分かりにくいですが、これがないとこのように一瞬で何枚も移動します。
See the Pen
Splide:マウスホイールでスクロールしてスライド(失敗例) by junpei (@junpei-sugiyama)
on CodePen.
これを防ぐには以下のどちらかをオプションに追加します。
waitForTransition: true, // スライダーが移動中にも操作を受け付ける
または
wheelSleep: 1000, // 次のWheel入力を受け付けるまでのスリープ時間をミリ秒単位で指定
両方のデモを見てみましょう。
デモ(waitForTransition)
See the Pen
Untitled by junpei (@junpei-sugiyama)
on CodePen.
こちらはホイールの大きさによってスライドする枚数が変わります。
小さくホイールすれば1枚、大きくホイールすると2〜3枚スライドします。
デモ(wheelSleep)
See the Pen
Splide:マウスホイールでスクロールしてスライド(wheelSleep) by junpei (@junpei-sugiyama)
on CodePen.
こちらは『次のWheel入力を受け付けるまでのスリープ時間をミリ秒単位で指定』となり、長くても短くてもイメージ通りの動きにならないと思うので、気を付けましょう。
まとめ
今回はSplideをマウスホイールでスクロールしてスライドさせる方法を解説してきました。
ちなみに縦方向にスライドさせるだけで、マウスホイールによるスライドが不要の場合はこのようになります。
new Splide(".splide", {
direction: "ttb", // スライダーの方向を指定
heightRatio: 0.6, // スライドの高さをスライダーの幅に対する割合で指定
}).mount();
高さの指定は必要になり、heightRatio
以外にこちらもheight
でheight: "10rem"
という感じに指定してもOKです。
また、Splideでマウスホイールさせると先ほども解説した通り2〜3枚スライドしたり、タイミングを合わせるのがちょっと難しいのでSwiperの方が良いかも知れません。
【Swiper】マウスホイールでスクロールして縦方向にスライドさせる方法
続きを見る
以上になります。
関連記事slick記事一覧
関連記事Swiper記事一覧
関連記事Splide記事一覧