SAMPLE
Splideスライダーの応用

INDEX
説明
Splide(v4.1.3)スライダーを応用したコードサンプルをご紹介します。
基本的な使い方は公式ドキュメントをご参照ください。
自動スクロールの再生/停止
実装例
解説
Auto Scrollエクステンションを使用したスライドに再生/停止ボタンを実装します。
autoScroll
オプションにてエクステンションの設定ができます。
実装例では挙動を明示するため、pauseOnHover
とpauseOnFocus
をfalse
にしています。
Autoplay
コンポーネントのisPaused()
メソッドから再生状態を取得できるため、取得した値を元に再生状態を変更します。play()
メソッドで自動再生を開始、pause()
メソッドで自動再生を停止することができます。
スライドが再生中の場合.splide__toggle
に.is-active
が付与されるため、ボタンのアイコンの切り替えに使用します。
スライドに応じてスライダーの高さを可変させる
実装例
解説
表示しているスライドの高さとスライダーの高さを合わせます。
updateOnMove
をtrue
にすることで、.is-active
を移動前に更新することができ、スライダーの高さを可変させるタイミングを早めることができます。
active
イベントの引数Slide
は、アクティブになったSplideコンポーネントを参照します。splide.root
からルート要素であるスライダーを取得でき、Slide.slide
からアクティブになったスライダー要素を取得できます。splide.root.style.height
へSlide.slide.offsetHeight
の値を代入することで、スライダーの高さをスライドの高さにします。
スライド関連の値をスライド外部に表示させる
実装例
解説
各スライド要素に任意のデータ属性を付与することで、イベント発火時に属性の値を取得しスライド外部に表示させます。
実装例1:スライドが持つテキストをページネーションに代入する
pagination:mounted
イベントの第一引数data
は、ページネーションのデータが格納されたオブジェクトを参照します。data.items
は、ページネーションのボタン要素を格納した配列を参照します。splide.Components.Elements.slides
は、スライド要素を格納した配列を参照します。
ボタン要素のindex
とスライド要素のindex
が一致する要素の[data-name]
の値を取得し、ボタンのテキストに代入します。
実装例2:スライドが持つテキストとカラーを特定の要素に代入する
active
イベントの引数Slide.slide
から、アクティブなスライド要素に付与されているデータ属性の値を取得し、特定の要素(#js-splide-panel
)に付与します。
ページネーション一体型プログレスバー
実装例
解説
ページネーションに自動再生の経過時間を表示します。
resetProgress
をfalse
にすることで、自動再生の経過時間をリセットせずに継続します。autoplay:playing
イベントの引数rate
は、自動再生の経過時間を0から1の範囲で表します。
ページネーション要素を取得し、style.setProperty
で--playing-rate
にrate * 100%
の値を代入します。
アクティブなスライドに紐づく.splide__pagination__page
には.is-active
が付与されます。.splide__pagination__page.is-active
の::after
のwidth
に--playing-rate
を適用することで、経過時間を表示します。
アクティブなスライドの番号とスライドの総数を表示する
実装例
解説
index
やlength
の取得が簡単なエクステンションを用いて、アクティブなスライドのindex
とスライドの総数を代入します。
エクステンションの第一引数のSplide
はSplideのインスタンスを参照します。mount()
関数はコンポーネントがマウントされた時に実行されます。Splide.index
でアクティブなスライドのindex
を、Splide.length
でスライドの総数を取得できます。update()
関数でアクティブなスライドのindex
を更新します。Splide.on()
からmove
イベントを登録し、スライダーが動く直前にupdate()
を実行します。
視覚効果の低減による影響
実装例
解説
Splideはprefers-reduced-motion: reduce
を検出するとアニメーションを制限します。
speed
とrewindSpeed
を0
で上書きますautoplay
をpaused
で上書き、再生ボタンを押さない限り自動再生が行われないように変更します
ドラッグやスワイプ後のトランジション以外のアニメーションは全て無効になります。reducedMotion
オプションから設定を上書きすることができますが、ユーザーが意図して視覚効果を低減させていることをお忘れなく。