BLOG

脱jQuery!swiperを使って流れるスライドショー!

| JavaScript

たまに見る、ずっと動いてるスライドショーってあるじゃないですか。
あれをswiperを使ってしたいと思います。
swiperはjQuery使ってないってのと結構使い勝手がいいってので便利なので
いろいろな使い方を今後も載せていけたらいいなと思います。

まずはCSSとJSを読み込みます。
簡単なのはCDNですかね?

<link
  rel="stylesheet"
  href="https://unpkg.com/swiper@8/swiper-bundle.min.css"
/>

<script src="https://unpkg.com/swiper@8/swiper-bundle.min.js"></script>

公式にこんなんのってるので、最新のをとってくるのがいいと思います。
他のインクルード的なのはも含めて公式を確認してくだせい。
swiperjs.com 公式

CSSとJSを読み込んだら次はHTML

<!-- Slider main container -->
<div class="swiper">
  <!-- Additional required wrapper -->
  <div class="swiper-wrapper">
    <!-- Slides -->
    <div class="swiper-slide">Slide 1</div>
    <div class="swiper-slide">Slide 2</div>
    <div class="swiper-slide">Slide 3</div>
    ...
  </div>
  <!-- If we need pagination -->
  <div class="swiper-pagination"></div>

  <!-- If we need navigation buttons -->
  <div class="swiper-button-prev"></div>
  <div class="swiper-button-next"></div>

  <!-- If we need scrollbar -->
  <div class="swiper-scrollbar"></div>
</div>

paginationやらnavifationやらを使うならそのへんのも記載してください。

const swiper = new Swiper('.swiper', {
  // Optional parameters
  direction: 'vertical',
  loop: true,

  // If we need pagination
  pagination: {
    el: '.swiper-pagination',
  },

  // Navigation arrows
  navigation: {
    nextEl: '.swiper-button-next',
    prevEl: '.swiper-button-prev',
  },

  // And if we need scrollbar
  scrollbar: {
    el: '.swiper-scrollbar',
  },
});

んで、基本的なJSは上記のような感じですね。
ループありのnavifationのボタンとかpaginationとかとかもありのですね。
は、基本はこんなところです。

さて、ここからが本題です。
JSとCSSを読み込んでHTMLを書いたらJSはこんな感じでございます。

  const swiper = new Swiper(".swiper", {
    loop: true,
    slidesPerView: "auto",
    loopedSlides: 2,
    speed: 5000,
    autoplay: {
      delay: 0,
    },
  });

ざっくり説明しますと、

  • loop : ループします。
  • slidesPerView : 画面にスライドがいくつ見せるかをautoに指定
  • loopedSlides : 上記をautoにした場合、HTMLで書いたスライドで画面上スライドが足りない場合があるので、クローンする数を指定する
  • speed : スライドするときのスピード、スライドが一つ分動くときにかかる秒数を指定
  • autoplay : 自動で動くってのを指定する
  • delay : 止まってる時間をなしにする

これで、一応止まらずにずっと動き続けるスライダーの完成ですが
これだけだと、動きにイージングがかかってしまって一定速度で動くって感じにはならいので
CSSでイージングを止めちゃいます。

.swiper .swiper-wrapper {
  transition-timing-function: linear;
}

これで、イージングがかからないようになります。
swiperは他にもいろいろ使いみちがあるので、今後も紹介していきますのでご期待を!

PAGE TOP