swiper.jsでスライドを完全に停止させます。一時停止ではなく完全停止です。
htmlのコードは以下の通りです。
<div class="swiper-container js-slider">
<div class="swiper-wrapper">
<div class="swiper-slide"><img src="images/swiper01.jpg" alt=""></div>
<div class="swiper-slide"><img src="images/swiper02.jpg" alt=""></div>
<div class="swiper-slide"><img src="images/swiper03.jpg" alt=""></div>
<div class="swiper-slide"><img src="images/swiper04.jpg" alt=""></div>
<div class="swiper-slide"><img src="images/swiper05.jpg" alt=""></div>
</div>
<div class="swiper-pagination"></div>
<div class="swiper-button-prev"></div>
<div class="swiper-button-next"></div>
</div>
<button class="btn-stop">停止</button>
JavaScriptのコードです。
スライダーの停止が確認しやすいように自動再生をオンにしています。swiperのdestroyメソッドの第一引数はswiperインスタンスの破棄(deleteInstance)、第二引数はswiperが動的に付与するクラスとスタイルの破棄(deleteStyles)です。どちらも初期値はtrueですが、今回は明示的にtrueを指定しています。destroy();と記述しても同じ結果になります。
第一引数がtrueの場合swiperインスタンスが破棄され、swiperのプロパティやメソッドにアクセスできなくなります。第二引数がtrueの場合、swiperが動的に付与するクラス(swiper-container-initialized)やスタイル(transformやtransition)がhtml要素から削除されます。
const sliderPager = document.querySelector('.swiper-pagination');
const sliderPrev = document.querySelector('.swiper-button-prev');
const sliderNext = document.querySelector('.swiper-button-next');
const sliderStop = document.querySelector('.btn-stop');
const swiper01 = new Swiper('.js-slider', {
autoplay: {
delay: 3000,
disableOnInteraction: false,
},
loop: true,
pagination: {
el: sliderPager,
clickable: true,
},
navigation: {
nextEl: sliderNext,
prevEl: sliderPrev,
}
});
sliderStop.addEventListener('click', function() {
swiper01.destroy(true, true);
sliderPager.style.display = 'none';
sliderPrev.style.display = 'none';
sliderNext.style.display = 'none';
});
なおdestroyメソッドを実行しただけでは、ページネーションとナビゲーションボタンは消えません。JavaScriptでCSSのdisplayプロパティをnoneに変更して消しています。





