pagetop

BLOG

【js】swiperのfreeModeで慣性スクロールしてみる

  • HOME

  • BLOG

  • 【js】swiperのfreeModeで慣性スクロールしてみる

Article

【js】swiperのfreeModeで慣性スクロールしてみる

javascript

アプリ版のAmazonプライムやNetflixなどのUIで使用されている慣性を利用したサムネイルのスライドをfreeModeを使って実現してみます。
以前の「jsswiper使」をチューニングしてためしてみます。

 

慣性スクロール

 

ライブラリをダウンロードする

まずはライブラリをダウンロードしましょう。

ダウンロード

CDNの利用も可能です。

CDN

<script src="https://cdn.jsdelivr.net/npm/swiper@8/swiper-bundle.min.js"></script>

 

CSSを用意する

続いてCSSを設置しましょう。

HTMLのヘッダに以下を記述します。

<link rel='stylesheet' href='css/swiper-bundle.css'>

以下のCSSを記述します。

/* スライド全体の余白 */
.swiper {
margin-top: 20px; /* スライダー上の余白 */
padding-left: 10vw; /* スライダー左の余白 */
padding-right: 20px; /* スライダー右の余白 */
}
/* スライド画像のサイズ */
.swiper-slide img {
height: auto;
width: 100%;
}

 

HTMLを記述する

続いてHTMLを記述しましょう。

<div class="swiper">
<div class="swiper-wrapper">
<div class="swiper-slide">
<img src="img/1.jpg" alt=""/>
</div>
<div class="swiper-slide">
<img src="img/2.jpg" alt=""/>
</div>
<div class="swiper-slide">
<img src="img/3.jpg" alt=""/>
</div>
<div class="swiper-slide">
<img src="img/4.jpg" alt=""/>
</div>
<div class="swiper-slide">
<img src="img/1.jpg" alt=""/>
</div>
<div class="swiper-slide">
<img src="img/2.jpg" alt=""/>
</div>
<div class="swiper-slide">
<img src="img/3.jpg" alt=""/>
</div>
<div class="swiper-slide">
<img src="img/4.jpg" alt=""/>
</div>
<div class="swiper-slide">
<img src="img/1.jpg" alt=""/>
</div>
</div>
<!-- ページネーション -->
<div class="swiper-pagination"></div>
<!-- ナビゲーションボタン -->
<div class="swiper-btn">
<div class="swiper-button-prev"></div>
<div class="swiper-button-next"></div>
</div>
<!-- スクロールバー -->
<div class="swiper-sb"><div class="swiper-scrollbar"></div></div>
</div>

<div class=”swiper-slide”>〜</div>がスライドするイメージです。

ページネーション、ナビゲーションボタン、スクロールバーをその下に記述します。

 

JavaScriptを記述する

それではJavaScriptを記述しましょう。

const swiper = new Swiper(".swiper", {
slidesPerView: 1.2, // スライド数
spaceBetween: "2%", // スライド間の余白
freeMode: true, // 前後のスライドで止まらずにスライド
grabCursor: true, // カーソルを置いたときに指のカーソルを表示
// ナビゲーションボタン
navigation: {
nextEl: ".swiper-button-next",
prevEl: ".swiper-button-prev" 
},
//スクロールバー
scrollbar: {
el: ".swiper-scrollbar",
hide: false,
draggable: true 
},
//ページネーション
pagination: {
el: ".swiper-pagination",
clickable: true 
},
//レスポンシブ768px以上
breakpoints: {
768: {
slidesPerView: 2,
}
}

});

freeModeをtrueにすると、これだけで慣性スクロールが実現できます。

 

デモはこちら

 

freeModeのパラメータ

freeModeには慣性スクロールのスピード等をチューニングできるパラメータがいくつかあります。

 

パラメータ デフォルト値 概要
freeModeMomentum true スライド時に惰性でしばらく動く
freeModeMomentumRatio 1 数字が大きいほど惰性スクロールの距離が伸びる(freeModeMomentum:trueが前提)
freeModeMomentumVelocityRatio 1 数字が大きいほど惰性スクロールのスピードが速くなる(freeModeMomentum:trueが前提)
freeModeMomentumBounce true 最後のスライドに行った際にバウンドするアニメーションをする(freeModeMomentum:trueが前提)
freeModeMomentumBounceRatio 1 上記freeModeMomentumBounceのバウンドの大きさ
freeModeMinimumVelocity 0.02 freeModeを開始するトリガー的スワイプの最小速度の設定
freeModeSticky false 惰性が終わって止まる時に一番近くのスライドにスナップする

 

まとめ

慣性スクロールによるスライドは場合によってはユーサビリティの低下にもなってしまうので、多少の慎重に取り扱う必要はあると思います。
ただ、動き自体は心地いよく多くのコンテンツ(サムネイル)を要する場合は効果的なケースもあります。
用途に応じて検討してみましょう。

 

Spread the love