• 2022.10.18
  • JavaScript
  • GIV_wataru

Swiper.jsでスライドショーを制作する方法

WEBサイトを制作している際に画像を横並びにしたいケースがあります。ただ幅には限度があるため多くの画像を並べられません。そこで活用したいのがスライドショーです。スライドショーならば、限度がある幅に対しても多くの画像をスライドして見せられます。そこで今回は、スライドショーを制作する際に便利な「Swiper.js」の使い方を紹介します。

CDNで読み込む、もしくはファイルを読み込む

SwiperはCDNで読み込んで使うか、ファイルを読み込んで使うかの2つの方法があります。
今回はCDNで読み込んでスライドショーを作る方法を解説していきます。

↓SwiperのCDNは次のリンクに載っています。
https://swiperjs.com/get-started

CDNには下記のようにCSSとjsの2つがあるので両方を設置しましょう。

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

ベースになるHTMLやjavascriptを記述する

下記がswiperのベースになるHTMLの記述です。

▢HTMLファイル

<section class="swiper_box">
    <h1 class="production_achieve">スライドショー</h1>
    <div class="swiper">
        <div class="swiper-wrapper">
            <div class="swiper-slide">Slide 1</div>
            <div class="swiper-slide">Slide 2</div>
            <div class="swiper-slide">Slide 3</div>
            <div class="swiper-slide">Slide 4</div>
            <div class="swiper-slide">Slide 5</div>
        </div>
    </div>
</section>

下記がswiperのベースになるjavascriptの記述です。

▢jsファイル

const swiper = new Swiper(".swiper", {
});

上記のHTMLとjavascriptの記述だけで下記のように最低限のスライドショーが作成できます。スライド部分のCSSは自身の好きなように調整してみてください。

See the Pen
Untitled
by wataru🐧 (@mimori_5046)
on CodePen.

左クリックをしながら、左にマウスを動かすと画像がスライドして、次の画像が表示されます。

スライドボタンやページネーションなどのオプションを設定する

最低限のスライドショーの作成をしたら、次はスライドボタンやページネーションの設置、スライドの速さの設定などのオプションを付け加えて、自分好みのスライドショーを作成していきましょう。ここからはSwiperでよく使うオプションを紹介します。

スライドボタンの設置

スライドボタンを設置すれば、ボタンをクリック・タップすることにより、スライドを動かせます。スライドボタンを設置するには、HTMLとjsファイルに以下の記述を行います。

▢HTMLファイル

<div class="swiper">
        <div class="swiper-wrapper">
            <div class="swiper-slide">Slide 1</div>
            <div class="swiper-slide">Slide 2</div>
            <div class="swiper-slide">Slide 3</div>
            <div class="swiper-slide">Slide 4</div>
            <div class="swiper-slide">Slide 5</div>
        </div>

<!-- スライドボタンの設置-->
      <div class="swiper-button-prev"></div>
      <div class="swiper-button-next"></div>
    </div>

▢jsファイル

const swiper = new Swiper(".swiper", {
<!-- スライドボタンの設置-->
    navigation: {
        nextEl: ".swiper-button-next",
        prevEl: ".swiper-button-prev"
    },
});

上記の記述をするとスライドボタンは下記のように設置できます。

See the Pen
Untitled
by wataru🐧 (@mimori_5046)
on CodePen.

ページネーションを設置する

ページネーションがあれば、現在自分が何枚目のスライドを表示しているのかが、一目で分かります。ページネーションを設置するには、HTMLとjsファイルに以下の記述を行います。

▢HTMLファイル

<section class="swiper_box">
    <h1 class="production_achieve">スライドショー</h1>
    <div class="swiper">
        <div class="swiper-wrapper">
            <div class="swiper-slide">Slide 1</div>
            <div class="swiper-slide">Slide 2</div>
            <div class="swiper-slide">Slide 3</div>
            <div class="swiper-slide">Slide 4</div>
            <div class="swiper-slide">Slide 5</div>
        </div>
        <div class="swiper-button-prev"></div>
        <div class="swiper-button-next"></div>
     <!-- ページネーションの設置-->
        <div class="swiper-pagination"></div>
    </div>
</section>

▢jsファイル

const swiper = new Swiper(".swiper", {
    navigation: {
        nextEl: ".swiper-button-next",
        prevEl: ".swiper-button-prev"
    },
 <!-- ページネーションの設置-->
   pagination: {
        el: '.swiper-pagination',
        type: 'bullets',
        clickable: true
    },
});

上記の記述をすると、ページネーションは下記のように設置できます。

See the Pen
ページネーション
by wataru🐧 (@mimori_5046)
on CodePen.

スライドのスピードを設定する

スライドのスピードの設定は簡単です。下記のようにjsファイルに「 speed: 数値,」と記述すればスピードの設定ができます。

▢jsファイル

const swiper = new Swiper(".swiper", {
    navigation: {
        nextEl: ".swiper-button-next",
        prevEl: ".swiper-button-prev"
    },
   pagination: {
        el: '.swiper-pagination',
        type: 'bullets',
        clickable: true
    },
 <!-- スライドのスピードの設定-->
  speed: 100,
});

上記の記述をすると下記のようにスライドのスピードを変えられます。

See the Pen
スピード
by wataru🐧 (@mimori_5046)
on CodePen.

ループに対応させる

これまで制作してきたスライドショーは、まだループに対応していません。ループに対応させれば、最後のスライド画面から最初のスライド画面に、最初のスライド画面から最後のスライド画面に移動できます。

下記のように「loop: true,」とjsファイルに記載するとループに対応させられます。

▢jsファイル

const swiper = new Swiper(".swiper", {
    navigation: {
        nextEl: ".swiper-button-next",
        prevEl: ".swiper-button-prev"
    },
   pagination: {
        el: '.swiper-pagination',
        type: 'bullets',
        clickable: true
    },
  speed: 100,
 <!-- ループに対応させる-->
  loop: true,
});

上記の記述をすると、下記のようにスライドにループを設定できます。

See the Pen
ループ
by wataru🐧 (@mimori_5046)
on CodePen.

スライドを自動で動くようにする

これまではボタンを押さないとスライドが動かない仕様でしたが、自動で動かせるような設定も可能です。下記のように「autoplay」とjsファイルに記載すると自動で動くようになります。

▢jsファイル

const swiper = new Swiper(".swiper", {
    navigation: {
        nextEl: ".swiper-button-next",
        prevEl: ".swiper-button-prev"
    },
   pagination: {
        el: '.swiper-pagination',
        type: 'bullets',
        clickable: true
    },
<!-- スライダーを自動で動かす-->
   autoplay: {
        delay: 2000,
    },
  speed: 100,
  loop: true,
});

上記の記述をすると下記のようにスライダーが自動で動くようになります。また 「delay: (数値),」でスライドの速さを設定できます。

See the Pen
スライド 自動
by wataru🐧 (@mimori_5046)
on CodePen.

表示させるスライドの枚数とスライドの間隔の設定

これまでは表示されるスライドの枚数は一枚のみでした。表示される枚数も設定可能です。またスライドの間隔の設定についても紹介します。下記のようにjsファイルに「slidesPerView」「spaceBetween」で表示されるスライドの枚数と間隔の設定が可能です。

▢jsファイル

const swiper = new Swiper(".swiper", {
    navigation: {
        nextEl: ".swiper-button-next",
        prevEl: ".swiper-button-prev"
    },
   pagination: {
        el: '.swiper-pagination',
        type: 'bullets',
        clickable: true
    },
   autoplay: {
        delay: 2000,
    },
  speed: 100,
  loop: true,
<!-- 表示するスライドの枚数-->
  slidesPerView: 3,
<!-- スライドの間隔の幅-->
  spaceBetween: 20,
});

上記の記述をすると、下記のように表示されるスライドの枚数と間隔を設定できます。今回は一画面に3枚、間隔の幅は20pxで設定しました。

See the Pen
スライド枚数 間隔
by wataru🐧 (@mimori_5046)
on CodePen.

真ん中にスライドを配置しつつ、左右に前後のスライドがちらっと見れるようにする

左右にちらっと前後のスライドを表示させるようにすると、閲覧者の興味を引かせられるでしょう。下記のようにjsファイルに「slidesPerView」を小数点で設定しつつ、「 centeredSlides: true,」と記述すれば実装できます。

▢jsファイル

const swiper = new Swiper(".swiper", {
    navigation: {
        nextEl: ".swiper-button-next",
        prevEl: ".swiper-button-prev"
    },
   pagination: {
        el: '.swiper-pagination',
        type: 'bullets',
        clickable: true
    },
   autoplay: {
        delay: 2000,
    },
  speed: 100,
  loop: true,
<!-- 小数点で表示領域を設定する-->
  slidesPerView: 1.5,
  spaceBetween: 20,
<!-- 中央に配置する-->
  centeredSlides: true,
});

上記の記述をすると、下記のように真ん中にスライドを配置しつつ、前後のスライドがちらっと見えるようになります。

See the Pen
センタリング
by wataru🐧 (@mimori_5046)
on CodePen.

レスポンシブにも対応。幅によって表示する枚数を変更する

パソコンでの表示なら3枚、タブレット表示なら2枚というように幅によって枚数を変更できます。下記のようにjsファイルに「breakpoints」を記載すると、幅ごとのブレイクポイントが設定できます。

▢jsファイル

const swiper = new Swiper(".swiper", {
    navigation: {
        nextEl: ".swiper-button-next",
        prevEl: ".swiper-button-prev"
    },
   pagination: {
        el: '.swiper-pagination',
        type: 'bullets',
        clickable: true
    },
   autoplay: {
        delay: 2000,
    },
  speed: 100,
  loop: true,
  slidesPerView: 1,
  centeredSlides: true,

<!-- 幅ごとのブレイクポイントを設定する-->
    breakpoints: {
        600: {
            slidesPerView: 2,
            spaceBetween: 20,
        },
        1120: {
            slidesPerView: 3,
            spaceBetween: 30,
        },
    },
});

ということでこれまでSwiperでのスライドショーの作成方法を解説してきました。ここで紹介した以外にも、様々なオプションがあるので、自分好みのスライドショーを作成してみてください。

GIV株式会社は、埼玉県川越市にあるWEB(ホームページ)制作会社です。お困りごと、ご相談、お気軽にご連絡ください。お問い合わせは、こちらから。

GIV / Design / Security / People
お問い合わせ
Contact