PORTFOLIO & WEB DESIGN MEMORANDOM BLOG
PORTFOLIO & WEB DESIGN MEMORANDOM BLOG
Splide Sliderの使い方
タグ :
目次
Splideの導入方法
CDNで簡単導入
- <!-- CSS -->
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@splidejs/splide@4/dist/css/splide.min.css">
- <!-- JS -->
- <script src="https://cdn.jsdelivr.net/npm/@splidejs/splide@4/dist/js/splide.min.js"></script>
HTML基本構造
- <div class="splide">
- <div class="splide__track">
- <ul class="splide__list">
- <li class="splide__slide">Slide 1</li>
- <li class="splide__slide">Slide 2</li>
- <li class="splide__slide">Slide 3</li>
- </ul>
- </div>
- </div>
初期化(JS)
- <script>
- document.addEventListener('DOMContentLoaded', function () {
- new Splide('.splide').mount();
- });
- </script>
基本的な設定(オプション)
- new Splide('.splide', {
- type: 'loop', // ループ
- perPage: 3, // 表示枚数
- gap: '1rem', // 間隔
- autoplay: true, // 自動再生
- interval: 3000, // 再生間隔
- pauseOnHover: true, // ホバーで停止
- }).mount();
よく使うオプション一覧
type —- slide / loop / fade
perPage — 表示枚数
perMove — 一度に動く枚数
gap — スライド間の余白
autoplay — 自動再生
speed — アニメーション速度
pagination — ドット表示
arrows — 矢印表示
rewind — 最後のスライドまで行ったら、最初に戻る
レスポンシブ対応
- new Splide('.splide', {
- perPage: 3,
- breakpoints: {
- 768: {
- perPage: 2,
- },
- 480: {
- perPage: 1,
- }
- }
- }).mount();
カスタマイズ(CSS)
矢印デザイン変更
- .splide__arrow {
- background: black;
- color: white;
- }
スライドデザイン
- .splide__slide {
- background: #eee;
- padding: 40px;
- text-align: center;
- }
ドット(pagination)
- .splide__pagination__page {
- background: gray;
- }
- .splide__pagination__page.is-active {
- background: black;
- }
応用テクニック
フェードスライダー
- new Splide('.splide', {
- type: 'fade',
- }).mount();
センター表示(カルーセル)
- new Splide('.splide', {
- type: 'loop',
- focus: 'center',
- perPage: 3,
- }).mount();
サムネイル付きスライダー
- const main = new Splide('#main');
- const thumbs = new Splide('#thumbs', {
- fixedWidth: 100,
- gap: 10,
- isNavigation: true,
- });
- main.sync(thumbs);
- main.mount();
- thumbs.mount();
複数スライダー
- document.querySelectorAll('.splide').forEach(el => {
- new Splide(el).mount();
- });
イベント
- const splide = new Splide('.splide');
- splide.on('moved', function (newIndex) {
- console.log('現在のスライド:', newIndex);
- });
- splide.mount();
WordPressで使う場合
方法①:直接読み込み
- wp_enqueue_script('splide-js', 'https://cdn...', [], null, true);
- wp_enqueue_style('splide-css', 'https://cdn...');
方法②:テーマ内に組み込み
• assets/js/splide.js
• assets/css/splide.css
よくあるエラー
動かない — JS読み込み忘れ
レイアウト崩れ — HTML構造ミス
スライドずれる — CSS競合
自動再生しない — autoplay未設定
Splide × GSAP(GSAP連携)
GSAPを読み込み
- <script src="https://cdn.jsdelivr.net/npm/gsap@3/dist/gsap.min.js"></script>
スライド切り替え時にアニメーション
- const splide = new Splide('.splide', {
- type: 'loop',
- });
- splide.on('mounted move', function () {
- gsap.from('.splide__slide.is-active', {
- opacity: 0,
- y: 50,
- duration: 0.8,
- ease: 'power3.out'
- });
- });
- splide.mount();
スライドが切り替わるたびにフェード+下から出現
スライド内の要素を個別アニメーション
HTML
- <li class="splide__slide">
- <h2 class="title">Title</h2>
- <p class="text">Description</p>
- </li>
GSAP
- splide.on('active', function (slide) {
- const el = slide.slide;
- gsap.from(el.querySelector('.title'), {
- opacity: 0,
- y: 30,
- duration: 0.6,
- });
- gsap.from(el.querySelector('.text'), {
- opacity: 0,
- y: 30,
- duration: 0.6,
- delay: 0.2,
- });
- });
テキストを順番にふわっと出す
スライド切替「前」にアニメーション
- splide.on('move', (newIndex, oldIndex, destIndex) => {
- const slides = splide.Components.Elements.slides;
- const currentSlide = slides[oldIndex];
- gsap.to(currentSlide, {
- opacity: 0,
- scale: 0.9,
- duration: 0.5,
- });
- });
タイムラインでリッチ演出
- splide.on('active', (slide) => {
- const el = slide.slide;
- const tl = gsap.timeline();
- tl.from(el.querySelector('.title'), {
- opacity: 0,
- y: 50,
- duration: 0.6
- })
- .from(el.querySelector('.text'), {
- opacity: 0,
- y: 50,
- duration: 0.6
- }, "-=0.3");
- });
パララックス風アニメーション
- splide.on('active', (slide) => {
- const el = slide.slide;
- const tl = gsap.timeline();
- splide.on('move', () => {
- gsap.to('.splide__slide img', {
- x: -50,
- duration: 1,
- ease: 'power2.out'
- });
- });
前のアニメーションをリセット
- splide.on('inactive', (slide) => {
- gsap.set(slide.slide.querySelectorAll('*'), {
- clearProps: 'all'
- });
- });
アニメーション初期化
サンプル
See the Pen
Untitled by ryotom (@ryotam-smoke)
on CodePen.
MILMONA MILMONA MILMONA MILMONA MILMONA
MILMONA MILMONA MILMONA MILMONA MILMONA















