はじめに
「JavaScriptのライブラリって結局コピペで済ませちゃってる…」
「クライアントからスライダーの修正依頼が来たけど、どう対応すればいいんだろう…」
Webサイト制作において、スライダー(画像やコンテンツを切り替えて表示する機能)の実装は避けては通れないスキルの一つです。
特にポートフォリオサイトを作る際や、実務でクライアントワークを行う際によく求められる機能です。
しかし、JavaScriptライブラリの実装やカスタマイズは、HTMLやCSSに比べて敷居が高く感じる方も多いのではないでしょうか。
この記事では、初学者でも実装できるSplideの使い方を、実践的なコード例とともに解説していきます。
本記事のポイントは以下の3つです。
- 初心者でも分かる!環境構築から丁寧に解説
- コピペでそのまま使える!実践的なコード例を提供
- ポートフォリオに使える!カスタマイズ例も紹介
必要な時にすぐ参照できるよう、ブックマークしておくと便利です。
Splideの基本セットアップ
「環境構築って難しそう…」と思われがちですが、Splideは非常にシンプルに導入できます。
- Splideの導入方法は主に3つあります:
- CDN(リンクを追加するだけの最も簡単な方法)
- npm(Node.jsプロジェクトでの導入)
- ダウンロード(ファイルをダウンロードして使用)
今回は、最も手軽に始められるCDNでの導入方法を中心に解説していきます。
1. CDNの読み込み
まず、下記のSplideの公式ページからCDNをコピーしてきます。
Splideの公式ページから「はじめる」を選択してください。
「CDNを利用」の箇所から「jsDelivr」をクリックしてください。
開いたページからコードをコピーしてメモしておいてください。
次に、HTMLファイルのheadタグとbodyタグ内に先ほどのコードを追加して、SplideのCSSとJavaScriptを読み込みます。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Splide CSS -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@splidejs/splide@latest/dist/css/splide.min.css">
<link rel="stylesheet" href="css/style.css">
<title>Splideスライダー</title>
</head>
<body>
<main>
</main>
<!-- Splide JavaScript -->
<script src="https://cdn.jsdelivr.net/npm/@splidejs/splide@latest/dist/js/splide.min.js"></script>
<script src="js/script.js"></script>
</body>
</html>
2. HTMLの記述
次に、スライダーを表示したい場所に以下のHTMLを追加します。
<div class="splide">
<div class="splide__track">
<ul class="splide__list">
<!-- スライド1 -->
<li class="splide__slide">
<img src="https://picsum.photos/1920/1080" alt="スライド画像1">
</li>
<!-- スライド2 -->
<li class="splide__slide">
<img src="https://picsum.photos/1920/1079" alt="スライド画像2">
</li>
<!-- スライド3 -->
<li class="splide__slide">
<img src="https://picsum.photos/1920/1078" alt="スライド画像3">
</li>
</ul>
</div>
<!-- ページネーション -->
<div class="splide__pagination"></div>
<!-- ナビゲーションボタン -->
<div class="splide__arrows">
<button class="splide__arrow splide__arrow--prev"></button>
<button class="splide__arrow splide__arrow--next"></button>
</div>
</div>
3. JavaScriptの初期化
JSファイルに以下のコードを追加します。
document.addEventListener('DOMContentLoaded', function() {
new Splide('.splide', {
type: 'loop', // ループスライダーにする
perPage: 1, // 1度に表示するスライド数
autoplay: true, // 自動再生を有効
interval: 3000, // 自動再生の間隔(ミリ秒)
pauseOnHover: true, // ホバー時に一時停止
arrows: true, // 矢印ボタンを表示
pagination: true, // ページネーションを表示
}).mount();
});
4. CSSのスタイリング
style.cssファイルに以下のスタイルを追加して、画像のサイズを調整します。
.splide img {
width: 100%;
height: 400px;
object-fit: cover;
}
これで基本的なスライダーの実装は完了です!
See the Pen Untitled by ryoma (@hwjgdjpk-the-decoder) on CodePen.
動作確認のポイント
うまく表示されないときは以下を確認してみてください。
- CDNのリンクが正しく読み込まれているか
- クラス名が正しく設定されているか
- JavaScriptファイルが正しく読み込まれているか
実践で使えるカスタマイズ例5選
現場でよく使われるスライダーのカスタマイズ例を5つ紹介します。コードをコピー&ペーストするだけで、ポートフォリオや実務で使えるスライダーが実装できます。
① 複数枚表示スライダー
商品一覧やブログ記事一覧でよく使用されるパターンです。
See the Pen Untitled by ryoma (@hwjgdjpk-the-decoder) on CodePen.
<div class="splide multi-splide">
<div class="splide__track">
<ul class="splide__list">
<li class="splide__slide"><img src="https://picsum.photos/400/300"></li>
<li class="splide__slide"><img src="https://picsum.photos/400/299"></li>
<li class="splide__slide"><img src="https://picsum.photos/400/298"></li>
<li class="splide__slide"><img src="https://picsum.photos/400/297"></li>
</ul>
</div>
</div>
.multi-splide {
width: 100%;
max-width: 1000px;
margin: 0 auto;
}
.multi-splide img {
width: 100%;
height: 200px;
object-fit: cover;
}
new Splide('.multi-splide', {
type: 'loop',
perPage: 3,
perMove: 1,
gap: 20,
pagination: false,
breakpoints: {
768: {
perPage: 2,
},
480: {
perPage: 1,
},
}
}).mount();
② 自動再生スライダー
コーポレートサイトのメインビジュアルなどで定番のパターンです。
See the Pen Untitled by ryoma (@hwjgdjpk-the-decoder) on CodePen.
<div class="splide auto-splide">
<div class="splide__track">
<ul class="splide__list">
<li class="splide__slide"><img src="https://picsum.photos/800/400"></li>
<li class="splide__slide"><img src="https://picsum.photos/800/399"></li>
<li class="splide__slide"><img src="https://picsum.photos/800/398"></li>
</ul>
</div>
</div>
.auto-splide {
width: 100%;
max-width: 800px;
margin: 0 auto;
}
.auto-splide img {
width: 100%;
height: 400px;
object-fit: cover;
}
new Splide('.auto-splide', {
type: 'fade',
rewind: true,
autoplay: true,
interval: 4000,
pauseOnHover: false,
arrows: false,
pagination: true,
}).mount();
③ サムネイル付きスライダー
写真ギャラリーやポートフォリオの作品紹介で重宝するパターンです。
See the Pen Untitled by ryoma (@hwjgdjpk-the-decoder) on CodePen.
<!-- メインスライダー -->
<div class="splide main-splide">
<div class="splide__track">
<ul class="splide__list">
<li class="splide__slide"><img src="https://picsum.photos/800/400"></li>
<li class="splide__slide"><img src="https://picsum.photos/800/399"></li>
<li class="splide__slide"><img src="https://picsum.photos/800/398"></li>
</ul>
</div>
</div>
<!-- サムネイルスライダー -->
<div class="splide thumbnail-splide">
<div class="splide__track">
<ul class="splide__list">
<li class="splide__slide"><img src="https://picsum.photos/400/300"></li>
<li class="splide__slide"><img src="https://picsum.photos/400/299"></li>
<li class="splide__slide"><img src="https://picsum.photos/400/298"></li>
</ul>
</div>
</div>
.main-splide {
width: 100%;
max-width: 800px;
margin: 0 auto 10px;
}
.main-splide img {
width: 100%;
height: 400px;
object-fit: cover;
}
.thumbnail-splide {
width: 100%;
max-width: 800px;
margin: 0 auto;
}
.thumbnail-splide img {
width: 100%;
height: 80px;
object-fit: cover;
cursor: pointer;
opacity: 0.6;
transition: opacity .3s;
}
.thumbnail-splide .is-active img {
opacity: 1;
}
document.addEventListener('DOMContentLoaded', function() {
let main = new Splide('.main-splide', {
type: 'loop',
perPage: 1,
arrows: true,
pagination: false,
});
let thumbnails = new Splide('.thumbnail-splide', {
perPage: 4,
gap: 10,
rewind: true,
pagination: false,
isNavigation: true,
});
main.sync(thumbnails);
main.mount();
thumbnails.mount();
});
④ 無限ループスライダー
お知らせなど、コンテンツを流し続けたい場合に使用するパターンです。
See the Pen Untitled by ryoma (@hwjgdjpk-the-decoder) on CodePen.
<div class="splide loop-splide">
<div class="splide__track">
<ul class="splide__list">
<li class="splide__slide">
<img src="https://picsum.photos/400/250" alt="画像1">
</li>
<li class="splide__slide">
<img src="https://picsum.photos/400/251" alt="画像2">
</li>
<li class="splide__slide">
<img src="https://picsum.photos/400/252" alt="画像3">
</li>
<li class="splide__slide">
<img src="https://picsum.photos/400/253" alt="画像4">
</li>
<li class="splide__slide">
<img src="https://picsum.photos/400/254" alt="画像5">
</li>
</ul>
</div>
</div>
.loop-splide {
width: 100%;
max-width: 1200px;
margin: 0 auto;
}
.loop-splide img {
width: 100%;
height: 200px;
object-fit: cover;
}
/* スライド間のギャップを設定 */
.splide__slide {
margin-right: 20px;
}
document.addEventListener('DOMContentLoaded', function() {
let splide = new Splide('.loop-splide', {
type: 'loop',
drag: 'free',
focus: 'center',
perPage: 3,
autoScroll: {
speed: 1,
},
arrows: false,
pagination: false,
autoplay: true,
interval: 0,
speed: 20000,
easing: 'linear',
waitForTransition: false,
updateOnMove: true,
});
splide.mount();
});
⑤ フェード効果スライダー
ポートフォリオサイトのメインビジュアルや写真ギャラリーで、よりスタイリッシュな演出を加えたい場合に使用するパターンです。
See the Pen Untitled by ryoma (@hwjgdjpk-the-decoder) on CodePen.
<div class="splide fade-splide">
<div class="splide__track">
<ul class="splide__list">
<li class="splide__slide"><img src="https://picsum.photos/800/400"></li>
<li class="splide__slide"><img src="https://picsum.photos/800/399"></li>
<li class="splide__slide"><img src="https://picsum.photos/800/398"></li>
</ul>
</div>
<div class="splide__progress">
<div class="splide__progress__bar"></div>
</div>
</div>
.fade-splide {
width: 100%;
max-width: 800px;
margin: 0 auto;
}
.fade-splide img {
width: 100%;
height: 400px;
object-fit: cover;
}
.splide__progress {
position: absolute;
bottom: 0;
left: 0;
right: 0;
height: 3px;
background: rgba(255,255,255,0.3);
}
.splide__progress__bar {
height: 100%;
background: #fff;
}
new Splide('.fade-splide', {
type: 'fade',
rewind: true,
autoplay: true,
interval: 5000,
arrows: false,
pagination: false,
speed: 1500,
pauseOnHover: false,
}).mount();
さいごに
今回は、Web制作でよく使用されるSplideの実装方法について紹介してきました。
実装のポイントをまとめると
- CDNでの導入が最も手軽で、初心者にもおすすめ
- 基本的な実装は、HTMLの構造を理解すれば簡単
- カスタマイズは、オプションを組み合わせることで柔軟に対応可能
次のステップとして
- まずは基本実装から始めて、徐々にカスタマイズを試してみましょう
- サンプルコードを参考に、自分のプロジェクトに合わせた調整を行ってください
- 公式ドキュメントも参考に、より高度なカスタマイズにもチャレンジしてみてください
参考リソース
少しずつカスタマイズの幅を広げていけば、クライアントからの要望にも柔軟に対応できるようになります。まずは基本的な実装を確実にマスターし、そこから徐々にレベルアップしていきましょう。