Swiperを使って、2つのスライドを連動して動かしたい。
こんにちは。
フリーランスWebコーダーの、たけちです。
コーディングのお仕事や勉強をしているとき、「2つのスライドを連動させたいけど、一体どうすればいいんだろう?」と悩んだことはありませんか?
下にサンプルを用意しましたが、どちらを動かしてもお互い連動することがわかると思います(矢印やページネーションのドットをクリックしてみてください)。
See the Pen Untitled by たけち (@kwxteqls-the-scripter) on CodePen.
本記事では、上記のようにswiperを使って2つのスライドを連動して同時に動かす方法について、わかりやすく解説します。
「swiperの連動ってむずかしそう…」という方でも、この記事を読み終えた頃には「意外と簡単!」と感じると思いますので、ぜひ最後までお付き合いください!
【Swiper】2つのスライドを連動して動かす方法
Swiperを使って2つのスライドを連動させるには、次の2ステップで作業します。
- 2つのswiperを用意する
- controllerで2つのswiperを紐付ける
では、順番にやってみましょう!
2つのswiperを用意する
まずは、下記のように2つのswiperをHTML内に記述します。
なお、2つのswiperを区別するために、1つめのidを「swiper1」、2つめのidを「swiper2」としています。
<!-- 1つめのスライド -->
<div id="swiper1" class="swiper">
<div class="swiper-wrapper">
<div class="swiper-slide _red">SLIDE 1-1</div>
<div class="swiper-slide _blue">SLIDE1-2</div>
<div class="swiper-slide _orange">SLIDE1-3</div>
</div>
<div class="swiper-pagination"></div>
<div class="swiper-button-prev"></div>
<div class="swiper-button-next"></div>
</div>
<!-- 2つめのスライド -->
<div id="swiper2" class="swiper">
<div class="swiper-wrapper">
<div class="swiper-slide _red">SLIDE2-1</div>
<div class="swiper-slide _blue">SLIDE2-2</div>
<div class="swiper-slide _orange">SLIDE2-3</div>
</div>
<div class="swiper-pagination"></div>
<div class="swiper-button-prev"></div>
<div class="swiper-button-next"></div>
</div>
Swiperを動かすためのJavaScriptはこちらです。
今回は、loopをtrueとし、ページネーションと矢印の機能をオンにしています。
なお、この時点では2つのSwiperは連動しておらず、別々に動作します。
const swiper1 = new Swiper('#swiper1', {
loop:true,
pagination: {
el: '.swiper-pagination',
clickable:true,
},
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
});
const swiper2 = new Swiper('#swiper2', {
loop:true,
pagination: {
el: '.swiper-pagination',
clickable:true,
},
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
});
controllerで2つのswiperを紐付ける
2つのSwiperを連動させるために、controllerを使って、JavaScriptファイル内に下記を追記します。
const swiper1 = new Swiper('#swiper1', {
loop:true,
pagination: {
el: '.swiper-pagination',
clickable:true,
},
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
});
const swiper2 = new Swiper('#swiper2', {
loop:true,
pagination: {
el: '.swiper-pagination',
clickable:true,
},
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
});
// 以下を追記
swiper1.controller.control = [swiper2];
swiper2.controller.control = [swiper1];
これで、swiper1とswiper2の2つのスライドが連動するようになりました!
See the Pen Untitled by たけち (@kwxteqls-the-scripter) on CodePen.