swiper.jsでかんたんに画像のスライダーが設置できる。オプションも豊富だし、便利よね〜。
ただ、Ver5はIE11で使えないんだとか。。。IE対応しなくても・・・って思うけど、まだ使ってる人もいるし、もう少しは対応しておいたほうが安全かなー。
ということで、ver5とjsのオプションの書き方が違ったので4.3.3バージョンで調整したコードをメモメモ。
ver5のスライダーはこちら→swiper.js Ver.5.4.5で簡単にスライダー設置(ナビ・ページネーション調整済)
スライドショーのサンプルはこちら→swiperスライダー433
目次
HTML
<head>内に読み込むcssを記載
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Swiper/4.3.3/css/swiper.min.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/4.3.3/js/swiper.min.js"></script>
<script src="assets/js/swiper.js"></script>
CSS同様、ダウンロードしてきても良いんだけど、サイトを軽くするためCDNで読み込む。
「assets/js/swiper.js」の名前は何でもOK。swiperのオプションを記載して自分好みに表示を調整。
スライド部分(メインビジュアル)
<div class="swiper-mv">
<div class="swiper-container slide-top">
<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>
<!-- swiper-container slide-top-->
<div class="swiper-button-prev"></div><!-- ナビゲーションボタン -->
<div class="swiper-button-next"></div><!-- ナビゲーションボタン -->
</div>
<!-- /swiper-mv -->
swiper部分は「<div class=”swiper-container slide-top”>」内です。
スライド部分(記事一覧)
<div class="swiper-article">
<div class="swiper-container article-list">
<div class="swiper-wrapper">
<article class="swiper-slide card mb_M_sp">
<a href="#">
<figure>
<img width="640" height="360" src="assets/images/img1.jpg">
<div class="card_contents">
<h3 class="card_title">テキストテキスト</h3>
<p class="card_time"><time datetime="2020-10-10">2020-10-10</time></p>
</div>
</figure>
</a>
</article>
<article class="swiper-slide card mb_M_sp">
<a href="#">
<figure>
<img width="640" height="360" src="assets/images/img2.jpg">
<div class="card_contents">
<h3 class="card_title">テキストテキスト</h3>
<p class="card_time"><time datetime="2020-10-10">2020-10-10</time></p>
</div>
</figure>
</a>
</article>
<article class="swiper-slide card mb_M_sp">
<a href="#">
<figure>
<img width="640" height="360" src="assets/images/img3.jpg">
<div class="card_contents">
<h3 class="card_title">テキストテキスト</h3>
<p class="card_time"><time datetime="2020-10-10">2020-10-10</time></p>
</div>
</figure>
</a>
</article>
<article class="swiper-slide card mb_M_sp">
<a href="#">
<figure>
<img width="640" height="360" src="assets/images/img1.jpg">
<div class="card_contents">
<h3 class="card_title">テキストテキスト</h3>
<p class="card_time"><time datetime="2020-10-10">2020-10-10</time></p>
</div>
</figure>
</a>
</article>
</div>
<!-- /swiper-wrapper -->
</div>
<!-- /swiper-container article-list -->
<div class="swiper-button-prev"></div><!-- ナビゲーションボタン -->
<div class="swiper-button-next"></div><!-- ナビゲーションボタン -->
</div>
<!-- /swiper-article -->
swiper部分は「<div class=”swiper-container article-list”>」内です。
JavaScript(swiper.jsにオプションを記述して調整)
// トップスライダー
let topSwiper = new Swiper ('.slide-top', {
// 動きの設定
loop: true, //最後に達したら先頭に戻る
autoplay: {
delay: 5000, //スライド切り替わるまでの時間(秒)
disableOnInteraction: false,
},
speed: 1000, //スライドのスピード(秒)
//ページネーション(◯のところ)表示の設定
pagination: {
el: '.swiper-pagination', //ページネーションの要素
type: 'bullets', //ページネーションの種類
clickable: true, //クリックに反応させる
},
//ナビゲーションボタン(矢印)表示の設定
navigation: {
nextEl: '.swiper-button-next', //次へボタン
prevEl: '.swiper-button-prev', //前へボタン
},
// 画像表示の設定
spaceBetween: 10, //画像間の余白。10px
autoHeight: true,
centeredSlides: true, //アクティブ画像を中心に(デフォルトは左端)
slidesPerView: 2, //前後ろ画像が半分表示される
breakpoints: { //画面サイズの表示設定
// 768px以上の場合
768: {
slidesPerView: 1, //小数点で前後画像が少し表示される
},
// 980px以上の場合
980: {
slidesPerView: 1.5, //前後ろ画像が半分表示される
},
},
});
// 記事一覧のスライダー
let articleSwiper = new Swiper('.article-list', {
loop: true, //最後に達したら先頭に戻る
loopedSlides: 4,
navigation: {
nextEl: '.swiper-button-next', //次へボタン
prevEl: '.swiper-button-prev', //前へボタン
},
// 画像表示の設定
spaceBetween: 30, //画像間の余白。30px
autoHeight: true,
slidesPerView: 4, //後ろ画像が表示される
breakpoints: { //画面サイズの表示設定
// 768px以上の場合
768: {
slidesPerView: 1.5, //小数点で後画像が少し表示される
},
// 980px以上の場合
980: {
slidesPerView: 3, //後ろ画像が表示される
},
}
});
.slide-topでメインビジュアルのトップスライダーの設定。
スマホのときは1枚表示で表示、PCのときは前後の画像が見える仕様に調整。
.article-listで記事一覧のスライダーの設定。
スマホのときは1枚と次のカードを半分表示、PCのときは4枚、タブレットで3枚表示の仕様に調整。
CSS
/* 共通 */
.swiper-container img{
width: 100%;
}
.swiper-button-prev,
.swiper-button-next{
background-image: none; /* デフォルトのボタン画像を消す */
}
/* トップスライダー */
.swiper-mv {
width:100%;
position: relative;
}
.swiper-mv .swiper-button-prev,
.swiper-mv .swiper-button-next {
width: 50px; /* ボタンの幅 */
height: 50px; /* ボタンの高さ */
opacity: .8;
}
.swiper-mv .swiper-button-prev{
left: 15px;
}
.swiper-mv .swiper-button-next{
right: 0;
}
.swiper-mv .swiper-button-prev:before {
content: '';
display: block;
width: 30px;
height: 30px;
border-bottom: 2px solid #fff;
border-left: 2px solid #fff;
-webkit-transform: rotate(45deg);
transform: rotate(45deg);
-webkit-transition: .5s;
transition: .5s;
}
.swiper-mv .swiper-button-next:before {
content: '';
display: block;
width: 30px;
height: 30px;
border-top: 2px solid #fff;
border-right: 2px solid #fff;
-webkit-transform: rotate(45deg);
transform: rotate(45deg);
-webkit-transition: .5s;
transition: .5s;
}
/* 記事一覧スライドボタン付き */
.swiper-article{
padding: 0 15px;
}
@media only screen and (min-width: 769px) {
.swiper-article{
margin: 0 auto;
width: 1050px;
position: relative;
}
.swiper-article .swiper-container{
width:980px;
margin: 0 auto;
}
}
/* 一覧スライドボタンのスタイル */
.swiper-article .swiper-button-prev,
.swiper-article .swiper-button-next{
width: 50px;
height: 50px;
background-color: rgba(0,0,0,.3);
}
@media only screen and (max-width: 768px) {
.swiper-article .swiper-button-prev,
.swiper-article .swiper-button-next{
top:50%;
}
}
.swiper-article .swiper-button-prev{
padding:15px 18px;
left:0;
}
.swiper-article .swiper-button-prev:before {
content: '';
display: block;
width: 20px;
height: 20px;
border-bottom: 2px solid #fff;
border-left: 2px solid #fff;
-webkit-transform: rotate(45deg);
transform: rotate(45deg);
-webkit-transition: .5s;
transition: .5s;
}
.swiper-article .swiper-button-next{
padding:15px 8px;
right:0;
}
.swiper-article .swiper-button-next:before {
content: '';
display: block;
width: 20px;
height: 20px;
border-top: 2px solid #fff;
border-right: 2px solid #fff;
-webkit-transform: rotate(45deg);
transform: rotate(45deg);
-webkit-transition: .5s;
transition: .5s;
}
もっと簡単に少ないコードで書ける気がする。。。
カード部分は自分で好きにコーディングしてね〜。
参考サイト・まとめ
サンプル付き!簡単にスライドを作れるライブラリSwiper.js超解説(基礎編)
上記サイトを参考にさせてもらいました。ありがとうございます。
とても丁寧に解説されていて、いろんなパターンやオプションを確認することができます。