ホーム » WEBデザイン » Swiper.jsで自動で切り替わるサムネイル付きスライドを実装する方法

Swiper.jsで自動で切り替わるサムネイル付きスライドを実装する方法

2025/08/06 | WEB, WEBデザイン

ITサポート・WEBサイト制作はお任せください

  • パソコンの動作が遅い
  • IT機器を入れ替えたい
  • IT・DXツールを導入したい
  • WEBサイトを作りたい
  • WEBサイトの表示がおかしくなった

上記の様なお悩みお気軽にご相談ください!

今回はJavaScriptのスライダーライブラリ「Swiper」を使って、自動で切り替わるサムネイル付きスライドをWEBサイトに表示する方法をご紹介します。

サムネイル付きスライドの完成イメージ

メインのスライドが自動で切り替わり、それに連動してサムネイルスライドもアクティブな状態が切り替わる仕組みです。

サムネイルをクリックすると、メインスライドも切り替わります。

必要なコード(全体)

まずは、すべてのコードをまとめてご紹介します。

<html>
  <head>
    <link
      rel="stylesheet"
      href="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css"
    />

    <style>
      .main {
        height: 400px;
      }

      .thumbnail {
        height: 100px;
      }

      .swiper-wrapper > :first-child {
        background-color: #ff7f7f;
      }

      .swiper-wrapper > *:nth-child(2) {
        background-color: #ff7fff;
      }

      .swiper-wrapper > *:nth-child(3) {
        background-color: #7f7fff;
      }

      .swiper-wrapper > *:nth-child(4) {
        background-color: #7fffff;
      }

      .swiper-wrapper > *:nth-child(5) {
        background-color: #7fff7f;
      }

      .swiper-wrapper > :last-child {
        background-color: #ffff7f;
      }

      .thumbnail .swiper-slide {
        opacity: 0.5;
        cursor: pointer;
      }

      .thumbnail .swiper-slide-thumb-active {
        opacity: 1;
      }
    </style>
  </head>
  <body>
    <script src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"></script>

    <script>
      document.addEventListener("DOMContentLoaded", function () {
        let slideThumbnail = new Swiper(".thumbnail", {
          slidesPerView: 6,
          loop: true,
        });

        let slider = new Swiper(".main", {
          effect: "fade",
          thumbs: {
            swiper: slideThumbnail,
          },
          autoplay: {
            delay: 5000,
          },
        });
      });
    </script>

    <div class="wrap-content">
      <div class="swiper main">
        <div class="swiper-wrapper">
          <div class="swiper-slide">スライド1</div>
          <div class="swiper-slide">スライド2</div>
          <div class="swiper-slide">スライド3</div>
          <div class="swiper-slide">スライド4</div>
          <div class="swiper-slide">スライド5</div>
          <div class="swiper-slide">スライド6</div>
        </div>
      </div>

      <div class="swiper thumbnail">
        <div class="swiper-wrapper">
          <div class="swiper-slide">スライド1</div>
          <div class="swiper-slide">スライド2</div>
          <div class="swiper-slide">スライド3</div>
          <div class="swiper-slide">スライド4</div>
          <div class="swiper-slide">スライド5</div>
          <div class="swiper-slide">スライド6</div>
        </div>
      </div>
    </div>
  </body>
</html>

各コードの解説

Swiperを読み込む

CDNを利用してSwiperを読み込みます。

    <link
      rel="stylesheet"
      href="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css"
    />
    <script src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"></script>

スライドのHTMLを構築する

スライドの基本的なHTMLを構築します。

今回は6枚のスライドとして、メインスライドとサムネイルスライドで同じ内容を用意します。

    <div class="wrap-content">
      <div class="swiper main">
        <div class="swiper-wrapper">
          <div class="swiper-slide">スライド1</div>
          <div class="swiper-slide">スライド2</div>
          <div class="swiper-slide">スライド3</div>
          <div class="swiper-slide">スライド4</div>
          <div class="swiper-slide">スライド5</div>
          <div class="swiper-slide">スライド6</div>
        </div>
      </div>

      <div class="swiper thumbnail">
        <div class="swiper-wrapper">
          <div class="swiper-slide">スライド1</div>
          <div class="swiper-slide">スライド2</div>
          <div class="swiper-slide">スライド3</div>
          <div class="swiper-slide">スライド4</div>
          <div class="swiper-slide">スライド5</div>
          <div class="swiper-slide">スライド6</div>
        </div>
      </div>
    </div>

「swiper」が付くクラスは固定で必須です。

これに加えて、メインスライドとサムネイルスライドを区別するためのクラス(main、thumbnail)をそれぞれ追加しています。

CSSでスライドのスタイルを設定する

スライドの表示を調整するためのCSSを設定します。

    <style>
      .main {
        height: 400px;
      }

      .thumbnail {
        height: 100px;
      }

      .swiper-wrapper > :first-child {
        background-color: #ff7f7f;
      }

      .swiper-wrapper > *:nth-child(2) {
        background-color: #ff7fff;
      }

      .swiper-wrapper > *:nth-child(3) {
        background-color: #7f7fff;
      }

      .swiper-wrapper > *:nth-child(4) {
        background-color: #7fffff;
      }

      .swiper-wrapper > *:nth-child(5) {
        background-color: #7fff7f;
      }

      .swiper-wrapper > :last-child {
        background-color: #ffff7f;
      }

      .thumbnail .swiper-slide {
        opacity: 0.5;
        cursor: pointer;
      }

      .thumbnail .swiper-slide-thumb-active {
        opacity: 1;
      }
    </style>

サムネイルスライドは半透明を初期状態として、アクティブになると透過なしで表示されるスタイルを設定しています。

また、サムネイルスライドをマウスホバーしたときのカーソルをポインターへ変更しています。

その他はサンプル用の配色設定となります

JavaScriptでSwiperを設定する

Swiperの機能を有効にするためのJavaScriptを記述します。

    <script>
      document.addEventListener("DOMContentLoaded", function () {
        let slideThumbnail = new Swiper(".thumbnail", {
          slidesPerView: 6,
          loop: true,
        });

        let slider = new Swiper(".main", {
          effect: "fade",
          thumbs: {
            swiper: slideThumbnail,
          },
          autoplay: {
            delay: 5000,
          },
        });
      });
    </script>

サムネイルスライドは6枚を繰り返し表示としています。

メインのスライドは1枚をフェードイン・アウトで自動的に切り替えながら表示します。

サムネイルスライドを先に初期化し、そのインスタンスをメインスライドのthumbsオプションに指定することで、両方のスライドが連動するようになります。

Swiper以外でサムネイル付きスライドを表示する方法

JavaScriptには他にもスライダーライブラリがあります。

Swiper以外でサムネイル付きスライドを表示する方法もご紹介しています。

サムネイル付きスライドのWEBサイト制作事例

今回のようなサムネイル付きスライドを表示したWEBサイトの制作事例をご紹介します。

まとめ

今回はJavaScriptのスライダーライブラリ「Swiper」を使って、自動で切り替わるサムネイル付きスライドをWEBサイトに表示する方法をご紹介しました。

thumbsオプションを活用することで、複雑な設定なしでメインスライドとサムネイルを連動させることができます。

WEBサイトに動きのある要素を取り入れたい方は、ぜひこの方法を試してみてください。

WEBサイトの制作や保守についてお困りのことがあれば、お気軽にご相談ください。

ITサポート・WEBサイト制作や保守の
ご相談はこちらから

ITサポート・WEBサイト制作はお任せください

  • パソコンの動作が遅い
  • IT機器を入れ替えたい
  • IT・DXツールを導入したい
  • WEBサイトを作りたい
  • WEBサイトの表示がおかしくなった

上記の様なお悩みお気軽にご相談ください!

キーワード

Keywords

タグ

Tag

カテゴリー

Category