- 2020年7月8日
- 2024年5月31日
swiper.jsを使って全画面切替のページを制作する方法

jsのプラグイン「swiper.js」を使用して全画面切替のページを制作する方法のメモ
swiper.jsを使用する準備
本家サイトからダウンロードするかcdnで読み込む
cdnで読み込む場合
https://cdnjs.com/libraries/Swiperにアクセスし、
- https://cdnjs.cloudflare.com/ajax/libs/Swiper/5.4.5/js/swiper.min.js
- https://cdnjs.cloudflare.com/ajax/libs/Swiper/5.4.5/css/swiper.min.css
を読み込む
htmlとcss
html
<div class="swiper-container">
<div class="swiper-wrapper">
<div class="swiper-slide no1">
<div class="in move">
<div class="in size">
<p>Slide <strong>1</strong></p>
</div>
</div>
</div>
<div class="swiper-slide no2">
<div class="in move">
<div class="in size">
<p>Slide <strong>2</strong></p>
</div>
</div>
</div>
<div class="swiper-slide no3">
<div class="in move">
<div class="in size">
<p>Slide <strong>3</strong></p>
</div>
</div>
</div>
</div>
<!-- ページャー-->
<div class="swiper-pagination"></div>
</div>
基本構成は
- .swiper-container
- .swiper-wrapper
- .swiper-slide
の3つ
今回は「.swiper-slide」にクラスで番号をつけている
「.swiper-slide」内はお好みで
css
.swiper-container {
height: 100vh;
}
.swiper-container .swiper-wrapper {
transition-timing-function: cubic-bezier(0.685, 0.09, 0.1, 0.94);
}
.swiper-container .swiper-slide .in {
display: flex;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
}
.swiper-container .swiper-slide .in.move {
transform: translate(30%, -100%);
transition: 1.1s 0.1s;
transition-timing-function: cubic-bezier(0.685, 0.09, 0.1, 0.94);
}
.swiper-container .swiper-slide .in.size {
flex-direction: column;
transform: scale(0.6);
transition: 1.0s;
}
.swiper-container .swiper-slide .in p {
font-size: 5.0rem;
opacity: 0;
transition: 0.8s 1.2s;
}
.swiper-container .swiper-slide .in strong {
font-size: 3.0em;
}
.swiper-container .swiper-slide.swiper-slide-next .in.move {
transform: translate(-30%, 100%);
}
.swiper-container .swiper-slide.swiper-slide-active .in.move {
transform: translate(0);
}
.swiper-container .swiper-slide.swiper-slide-active .in.size {
transform: scale(1);
}
.swiper-container .swiper-slide.swiper-slide-active .in p {
opacity: 1;
transform: translate(0) !important;
}
.swiper-container .swiper-slide.no1 .in.size {
background-color: #f00;
}
.swiper-container .swiper-slide.no1 .in p {
transform: translate(0, 30%);
}
.swiper-container .swiper-slide.no2 .in.size {
background-color: #0f0;
}
.swiper-container .swiper-slide.no2 .in p {
transform: translate(100%, 0);
}
.swiper-container .swiper-slide.no3 .in.size {
background-color: #00f;
}
.swiper-container .swiper-slide.no3 .in p {
transform: scale(0.2);
}
スライド1枚を1画面にする
js
var mySwiper = new Swiper ('.swiper-container', {
// Optional parameters
direction: 'vertical',
loop: false,
speed: 1200,
effect: "fade",
virtualTranslate: true,
preventInteractionOnTransition: true,
followFinger: false,
mousewheel: {
invert: false
},
pagination: {
el: '.swiper-pagination',
}
});
mySwiper.on('slideChangeTransitionEnd', function () {
console.log("slide" + (Number(this.activeIndex) + 1));
});
- virtualTranslate
- trueにすると.swiper-wrapperのtransformが削除される(多分effect: “fade”ではあまり関係無い)
- preventInteractionOnTransition
- trueにすると、移行中にスワイプまたはナビゲーション/ページネーションボタンでスライドを変更出来ない
- followFinger
- falseのとき、タッチを離したときにスライドが動く。ホールドしている間はアニメーションさせないようにできる
- mousewheel
- PC時にマウスホイールで動かせるようにする
まとめ
swiper.jsを使用すれば全画面スライドのページが作れる
ブログによって載せられているオプションが違かったりするので、自分の環境でやりたいことが出来ない時は、別のオプションを使用したり色々試した方が良い
デモ
