swiper.jsでかんたんに画像のスライダーが設置できる。オプションも豊富だし、便利よね〜。
汎用的に使えるバージョンでオプションを追加したコードをメモメモ。
スライドショーのサンプルはこちら→swiperスライダー
目次
HTML
<head>内に読み込むcssを記載
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Swiper/5.4.5/css/swiper.css">
<link rel="stylesheet" href="assets/css/swiper.css">
ダウンロードしてきても良いんだけど、サイトを軽くするため、swiper.cssをCDNで読み込む。
「assets/css/swiper.css」の名前は何でもOK。自分のオリジナル調整用。
</body>前に読み込むjavascriptを記載
<script src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/5.4.5/js/swiper.min.js"></script>
<script src="assets/js/swiper.js"></script>
CSS同様、ダウンロードしてきても良いんだけど、サイトを軽くするためCDNで読み込む。
「assets/js/swiper.js」の名前は何でもOK。swiperのオプションを記載して自分好みに表示を調整。
スライド部分
<div class="slide">
<!-- swiperのコンテナー -->
<div class="swiper-container">
<div class="swiper-wrapper">
<div class="swiper-slide"><img src="assets/images/img1.jpg" alt=""></div>
<div class="swiper-slide"><img src="assets/images/img2.jpg" alt=""></div>
<div class="swiper-slide"><img src="assets/images/img3.jpg" alt=""></div>
<div class="swiper-slide"><img src="assets/images/img2.jpg" alt=""></div>
</div>
<!-- ページネーション -->
<div class="swiper-pagination swiper-pagination-white"></div>
<!-- ナビゲーションボタン -->
<div class="swiper-button-prev swiper-button-white"></div>
<div class="swiper-button-next swiper-button-white"></div>
</div>
<!-- /swiper-container -->
</div>
<!-- /slide -->
「<div class=”slide”>」は、自分でページ調整するためにオリジナルで付けているだけなので、なくても大丈夫。
swiper部分は「<div class=”swiper-container”>」内です。
JavaScript(swiper.jsにオプションを記述して調整)
let mySwiper = new Swiper ('.swiper-container', { // ←swiper使う時、これは絶対必要。
//この中にオプションを記述して調整
// 動きの設定
loop: true, //最後に達したら先頭に戻る
autoplay: {
delay: 5000, //スライド切り替わるまでの時間(秒)
},
speed: 1000, //スライドのスピード(秒)
spaceBetween: 10, //画像間の余白。10px
// パーツの設定
//ページネーション(◯のところ)表示の設定
pagination: {
el: '.swiper-pagination', //ページネーションの要素
type: 'bullets', //ページネーションの種類
clickable: true, //クリックに反応させる
},
//ナビゲーションボタン(矢印)表示の設定
navigation: {
nextEl: '.swiper-button-next', //次へボタン
prevEl: '.swiper-button-prev', //前へボタン
},
// 画像表示の設定
autoHeight: true,
centeredSlides: true, //アクティブ画像を中心に(デフォルトは左端)
breakpoints: { //画面サイズの表示設定
// 768px以上の場合
768: {
slidesPerView: 1.5, //小数点で前後画像が少し表示される
},
// 980px以上の場合
980: {
slidesPerView: 2, //前後ろ画像が半分表示される
},
}
});
スマホのときは1枚表示で表示、PCのときは前後の画像が見える仕様に調整。
CSS
.swiper-container{
width: 100%;
}
.swiper-container img{
width: 100%;
}
cssは.swiper-containerで画面の横幅いっぱい、imgで画像が小さいときに大きく表示させるため記述している。
おまけ:自動再生の停止・再生ボタン
たまに「スライド停止ボタンつけて」って言われることがある。
忘れるのでメモしとく。
$(window).on('load', function() {
$('.stopbtn').on('click', function() {
let _class = $(this).attr('class');
if (_class == 'stopbtn stop') {
$(this)
.addClass('start')
.removeClass('stop');
mySwiper.autoplay.stop();
} else {
$(this)
.addClass('stop')
.removeClass('start');
mySwiper.autoplay.start();
}
});
});
mySwiper.autoplay.start();の「mySwiper」のは、swiper.jsに記載した「let mySwiper = new Swiper〜」に記述した「mySwiper」のこと。
//ボタンの位置(だいたいmvのスライドなのでこのclass名)
.mvStop{
position: absolute;
left: calc(50% + 80px);
bottom: 0;
z-index: 100;
}
//ボタンの装飾
.stopbtn {
cursor: pointer;
width: 30px;
height: 30px;
border-radius: 50%;
background-color: #00BFB8;
}
.stopbtn.stop {
position: relative;
display: inline-block;
&:before, &:after {
position: absolute;
top: 7px;
content: '';
width: 3px;
height: 15px;
background-color: #fff;
}
&:before {
left: 9px;
}
&:after {
right: 9px;
}
}
.stopbtn.start {
position: relative;
display: inline-block;
&:before {
position: absolute;
top: 8px;
left: 10px;
content: '';
width: 0;
height: 0;
border-style: solid;
border-width: 7px 0 7px 14px;
border-color: transparent transparent transparent #fff;
}
&:after {
display: none;
}
}
参考サイト・まとめ
サンプル付き!簡単にスライドを作れるライブラリSwiper.js超解説(基礎編)
【swiper.js】停止ボタン付けたい【autoplayはtureで】
上記サイトを参考にさせてもらいました。ありがとうございます。
とても丁寧に解説されていて、いろんなパターンやオプションを確認することができます。
今当たり前にサイトのトップページにあるスライダーって、必要なんだろうか・・・。みんな見てる??
Appleサイトもスライドなしになったし、この先なくなっていくのかなぁ〜。とか思ったり。
まだまだ無くなることはなさそうな気もするので、ライブラリを使ってかんたんにステキなスライダーを表示していきたいです。