【2026年最新版】Swiperの使い方完全ガイド|基本から動かない時の対処法まで
結論:Swiperは最もおすすめのスライダープラグイン
「スライドショーを実装したいけど、どのプラグインを使えばいいか分からない…」そんな悩みを抱えていませんか?
Swiperは、jQueryに依存せず、モダンなJavaScriptで動作する最も人気のあるスライダープラグインです。モバイルファーストで設計されており、豊富なオプションとレスポンシブ対応により、あらゆるWebサイトに対応できます。
- Swiperの基本的な実装手順(CDN・ファイル読み込み)
- よく使うオプション設定とカスタマイズ方法
- 動かない時の原因チェックリストと解決法
- Web制作でスライダーを実装したい人
- jQueryを使わずにスライダーを作りたい人
- Swiperが動かなくて困っている人
Swiperとは?なぜ選ばれるのか
Swiperは、モバイルとデスクトップの両方に対応した、フリーで使えるスライダープラグインです。
Swiperが選ばれる3つの理由
- jQuery不要:モダンなJavaScriptで動作し、軽量
- 豊富なオプション:自動再生、ループ、ページネーション、レスポンシブなど多彩
- モバイルファースト:タッチ操作に最適化された設計
公式サイト:https://swiperjs.com/
Swiperの基本実装手順【3ステップ】
Swiperの実装は、以下の3ステップで完了します。この順番を守ることが、エラーを防ぐ最大のポイントです。
ステップ1:CSSファイルの読み込み
まず、HTMLの<head>内にSwiperのCSSを読み込みます。
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css">
注意:バージョン番号(@11)は、最新版を使いたい場合は公式ドキュメントで確認してください。本記事では安定版のバージョン11を使用します。
ステップ2:HTMLマークアップの配置
次に、スライドショーを表示したい場所にHTMLを配置します。
- <div class="swiper">
- <div class="swiper-wrapper">
- <div class="swiper-slide"><img src="images/slide01.jpg" alt="スライド1"></div>
- <div class="swiper-slide"><img src="images/slide02.jpg" alt="スライド2"></div>
- <div class="swiper-slide"><img src="images/slide03.jpg" alt="スライド3"></div>
- </div>
- <!-- ページネーション(ドット表示) -->
- <div class="swiper-pagination"></div>
- <!-- 前へ・次へボタン -->
- <div class="swiper-button-prev"></div>
- <div class="swiper-button-next"></div>
- </div>
重要なクラス名の役割
| クラス名 | 役割 | 変更可否 |
|---|---|---|
swiper-wrapper |
スライド全体を囲む必須要素 | ❌ 変更不可 |
swiper-slide |
個々のスライドアイテム | ❌ 変更不可 |
swiper |
最外側のコンテナ | ✅ 変更可能 |
swiper-pagination |
ページネーション(ドット) | ✅ 変更可能 |
swiper-button-prev/next |
前へ・次へボタン | ✅ 変更可能 |
注意:swiper-wrapperとswiper-slideは変更できませんが、<div>を<ul><li>に変更することは可能です。
ステップ3:JavaScriptファイルの読み込みと初期化
</body>閉じタグの直前に、以下の順番でJavaScriptを読み込みます。
- <!-- 1. Swiper本体を先に読み込む -->
- <script src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"></script>
- <!-- 2. 初期化コードを後に読み込む -->
- <script src="js/swiper-init.js"></script>
次に、swiper-init.jsに初期化コードを記述します。
- const mySwiper = new Swiper('.swiper', {
- // ループ再生
- loop: true,
- // スライド切り替えの速度(ミリ秒)
- speed: 600,
- // 自動再生
- autoplay: {
- delay: 3000, // 3秒ごとに切り替え
- disableOnInteraction: false, // ユーザー操作後も自動再生継続
- },
- // ページネーション
- pagination: {
- el: '.swiper-pagination',
- clickable: true, // クリックで移動可能
- type: 'bullets', // 'bullets', 'fraction', 'progressbar'
- },
- // ナビゲーションボタン
- navigation: {
- nextEl: '.swiper-button-next',
- prevEl: '.swiper-button-prev',
- },
- });
これで基本的なスライドショーが動作します!
実務で使える!よく使うオプション設定
ここでは、実際の制作現場でよく使われるオプションをシーン別に紹介します。
1. 複数枚表示+レスポンシブ対応
PCでは3枚、タブレットでは2枚、スマホでは1枚表示する設定です。
- const mySwiper = new Swiper('.swiper', {
- slidesPerView: 1, // デフォルトは1枚
- spaceBetween: 20, // スライド間の余白(px)
- // レスポンシブ設定
- breakpoints: {
- // 768px以上(タブレット)
- 768: {
- slidesPerView: 2,
- spaceBetween: 30,
- },
- // 1024px以上(PC)
- 1024: {
- slidesPerView: 3,
- spaceBetween: 40,
- },
- },
- });
2. 縦方向スライド
縦にスクロールするスライドショーを作成する場合の設定です。
- const mySwiper = new Swiper('.swiper', {
- direction: 'vertical', // 'horizontal'(横)または 'vertical'(縦)
- loop: true,
- autoplay: {
- delay: 2500,
- },
- });
注意:縦方向スライドでは、.swiperにheightを指定する必要があります。
- .swiper {
- height: 500px; /* 必須 */
- }
3. フェード切り替え
スライドではなく、フェードイン・アウトで切り替える設定です。
- const mySwiper = new Swiper('.swiper', {
- effect: 'fade', // 'slide', 'fade', 'cube', 'coverflow', 'flip'
- fadeEffect: {
- crossFade: true, // クロスフェード有効化
- },
- loop: true,
- autoplay: {
- delay: 4000,
- },
- });
4. サムネイル付きスライダー
メインスライドとサムネイルを連動させる設定です。
- <!-- メインスライダー -->
- <div class="swiper swiper-main">
- <div class="swiper-wrapper">
- <div class="swiper-slide"><img src="images/01.jpg"></div>
- <div class="swiper-slide"><img src="images/02.jpg"></div>
- </div>
- </div>
- <!-- サムネイルスライダー -->
- <div class="swiper swiper-thumbs">
- <div class="swiper-wrapper">
- <div class="swiper-slide"><img src="images/01-thumb.jpg"></div>
- <div class="swiper-slide"><img src="images/02-thumb.jpg"></div>
- </div>
- </div>
- // サムネイルスライダーを先に初期化
- const swiperThumbs = new Swiper('.swiper-thumbs', {
- slidesPerView: 4,
- spaceBetween: 10,
- watchSlidesProgress: true, // 必須
- });
- // メインスライダーで連動
- const swiperMain = new Swiper('.swiper-main', {
- thumbs: {
- swiper: swiperThumbs, // サムネイルと連動
- },
- });
主要オプション一覧表
Swiperで頻繁に使用されるオプションをまとめました。この表を見れば、基本的なカスタマイズはすべて対応できます。
| オプション名 | 説明 | デフォルト値 | 設定例 |
|---|---|---|---|
loop |
ループ再生の有効化 | false |
true |
speed |
スライド移動速度(ミリ秒) | 300 |
600 |
direction |
スライド方向 | 'horizontal' |
'vertical' |
slidesPerView |
1画面に表示するスライド数 | 1 |
3 / 'auto' |
spaceBetween |
スライド間の余白(ピクセル) | 0 |
20 |
effect |
切り替えエフェクト | 'slide' |
'fade', 'cube', 'flip' |
autoplay.delay |
自動再生の間隔(ミリ秒) | 3000 |
5000 |
autoplay.disableOnInteraction |
操作後に自動再生を停止するか | true |
false |
pagination.type |
ページネーションの種類 | 'bullets' |
'fraction', 'progressbar' |
pagination.clickable |
ページネーションクリック可否 | false |
true |
breakpoints |
レスポンシブ設定 | – | 上記サンプル参照 |
すべてのオプションは、公式APIドキュメントで確認できます。
Swiperが動かない時の原因チェックリスト
「コードを書いたのに動かない…」そんな時は、以下のチェックリストを上から順に確認してください。ほとんどの場合、このリストで解決できます。
- CSSとJavaScriptの読み込み順が正しいか
→ CSS → Swiper本体JS → 初期化JSの順で読み込んでいますか? - Swiperのバージョンが統一されているか
→ CSSとJSで異なるバージョン(例:CSS=@11、JS=@7)を読み込んでいませんか? - クラス名が一致しているか
→ HTMLのclass="swiper"とJSのnew Swiper('.swiper')が一致していますか? - 必須クラス名を変更していないか
→swiper-wrapperとswiper-slideは変更できません - ブラウザのコンソールにエラーが出ていないか
→ F12キーで開発者ツールを開き、Console(コンソール)タブを確認 - ファイルパスが正しいか
→ CDNのURLや、自前JSファイルのパスが間違っていませんか? - スライドが2枚以上あるか
→loop: trueを使う場合、最低2枚以上のスライドが必要です - 他のJavaScriptとの競合がないか
→ 他のプラグインやスクリプトがSwiperの動作を妨げていないか確認
よくあるエラーメッセージと対処法
| エラーメッセージ | 原因 | 対処法 |
|---|---|---|
Swiper is not defined |
Swiper本体が読み込まれていない | Swiper本体JSの読み込み順を確認 |
Cannot read property 'querySelector' |
指定したクラス名が存在しない | HTMLとJSのクラス名を確認 |
| スライドがガクガクする | CSSが正しく読み込まれていない | Swiper CSSの読み込みを確認 |
| ループが動作しない | スライドが1枚しかない | 最低2枚以上のスライドを用意 |
デバッグのための確認コマンド
ブラウザのコンソールに以下を入力すると、Swiperが正しく読み込まれているか確認できます。
- console.log(Swiper); // Swiper本体が読み込まれていればオブジェクトが表示される
よくある質問
Q1. Swiperは商用利用できますか?
はい、SwiperはMITライセンスで提供されているため、無料で商用利用可能です。クレジット表記も不要です。
Q2. jQueryは必要ですか?
いいえ、Swiperはバニラ(素の)JavaScriptで動作するため、jQueryは不要です。これにより、サイトの読み込み速度が向上します。
Q3. WordPressで使う場合の注意点はありますか?
WordPressでは、wp_enqueue_script()を使ってスクリプトを読み込むのが推奨されます。また、テーマによってはすでにSwiperが読み込まれている場合があるため、二重読み込みに注意してください。
Q4. バージョン7と11で記述方法は違いますか?
基本的な記述方法は同じですが、一部のオプション名や機能が変更・追加されています。本記事では最新の安定版(バージョン11)を使用していますが、古いバージョンを使う場合は公式のマイグレーションガイドを参照してください。
Q5. CDNとダウンロード版、どちらを使うべきですか?
開発段階ではCDNが便利ですが、本番環境ではダウンロード版の使用を推奨します。理由は以下の通りです。
- CDNのサーバーがダウンした場合のリスク回避
- バージョンの固定による安定性の確保
- オフライン環境でも動作する
まとめ
この記事では、Swiperの基本的な実装方法から、実務で使える応用例、動かない時の対処法まで解説しました。
- SwiperはjQuery不要で軽量・高機能なスライダープラグイン
- CSS → Swiper本体JS → 初期化JSの読み込み順を守る
swiper-wrapperとswiper-slideのクラス名は変更不可- レスポンシブ対応は
breakpointsオプションで簡単に実装可能 - 動かない時は読み込み順・クラス名・バージョン統一をチェック
Swiperをマスターすれば、ECサイトのバナースライダー、ポートフォリオの作品ギャラリー、ブログのサムネイルスライドなど、幅広い用途に対応できます。
ぜひ実際にコードを書いて、Swiperの便利さを体感してください!




