JavaScript
 | 

【2021年8月】Swiper.jsで急にレイアウト崩れ(横スクロール)が起きた時の解決策

2021年8月の後半、突然Swiper.jsのレイアウトが崩れて横スクロールするようになってしまいました。

すでに納品済みのサイトでこのような事象が起きて、自分のローカル環境でも崩れており、まさか...と思ったら、どうやらSwiper.jsのアップデートが原因だったみたいです。

今回はその解決策を解説します。

結論

解決策1: クラス名を変える

<div class="swiper-container" id="xxx">
  <div class="swiper-wrapper">

↓

<div class="swiper" id="xxx">
  <div class="swiper-wrapper">

上記のように、Swiperの親要素のクラスswiper-containerswiperに変えるだけです。

解決策2: 読み込ませているjsを変える

レイアウト崩れが起きている方は、おそらくCDN経由で「最新バージョンやおすすめバージョン」を読み込ませているはずです。

それを、6系のSwiperを読み込ませるように修正すると今回の事象は解決します。

// 最新バージョンを読み込ませている
// (srcは人によって多少違う可能性があります)
<script src="https://unpkg.com/swiper/swiper-bundle.min.js"></script>

↓

// バージョン6.8.4を指定して読み込ませる
<script src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/6.8.4/swiper-bundle.min.js"></script>

※CSSも最新バージョンなどを読み込ませている場合は、jsとバージョンを揃えてあげましょう

https://cdnjs.cloudflare.com/ajax/libs/Swiper/6.8.4/swiper-bundle.min.css

解説

以下はSwiper.jsの更新履歴です。

https://github.com/nolimits4web/swiper/blob/master/CHANGELOG.md

このページで「core swiper-container class to swiper」のワードで検索をすれば該当箇所を確認できます。

7.0.0 (2021-08-25)のアップデートで、Swiperの親要素で使用するクラス名がswiper-containerからswiperに変更されたのがレイアウト崩れの原因でした。

この変更により、Swiperのjsがそもそも実行されていなかったみたいです。

今後の対策

今回の事象は、CDN経由で「最新バージョンやおすすめバージョンを読み込ませる」ようにしていると発生してしまいます。

なので、今後もCDN経由で読み込ませたい場合は、バージョンを指定してあげるといいでしょう。