久しぶりにSwiperを使おうと思ったら、前に使ったときからいろいろ変わっていた(最近こんなんばっかりだ)。まずドキュメントの読み方から躓いたため、備忘録としてSwiper(v11)の基本的な使い方をまとめておく。
Swiperのインストール方法
Swiperを使うには、まず必要なパッケージをインストールする必要がある。
CDNを利用する場合は、以下のようにバンドルされたCSSファイルとJavaScriptファイルをWebページに直接埋め込む。
これらのCSSファイルとJavaScriptファイルには、後述するモジュールがすべて含まれている。したがってバージョンの差をあまり意識せずに、Swiperを利用できる。
Swiper v11の基本的な使い方
私が以前使ったSwiperは、v8だった。現在はv11だそうである。光と陰は弓矢のように速い。どうやらv10でモジュール構造が採用されたらしく、それ以前の感覚でSwiperを使おうとするとマゴマゴする。
HTMLレイアウト
Swiperを利用するには、所定のHTMLレイアウトに従う必要がある。以下のようなものである。
swiper
、swiper-wrapper
、swiper-slide
の3つのクラスを持つ要素は必須である。残りは任意のクラス名を使える。ただ、上記のクラス名でデフォルトのスタイリングがなされている。任意のクラス名を使う場合は、そのクラス名でのスタイリングを忘れてはならない。
このHTMLのレイアウトは、v8から変わっていない(たぶん)。
デフォルトCSSとカスタムCSS
Swiperには、先のHTMLレイアウトを前提に、デフォルトのCSSが用意されている。これもJavaScriptファイルと同じようにモジュール化されており、使いたいものを適宜インポートする。
また、各モジュールのCSSファイルへのパスは、公式ドキュメントか、swiper
パッケージのpackage.json
のexport
プロパティで確認できる。
独自にスタイルを指定したい場合は、先のクラスでスタイリングを上書きする。具体的には、デフォルトのCSSファイルをインポートした後に、自前のCSSファイルをインポートすれば良い。
コア機能とモジュール
ナビゲーションやページネーション、スライダの自動再生といった諸機能は、かつてSwiperクラス単体で賄われていた。現在のSwiperは機能ごとにモジュール化され、必要に応じてそれらを取り込む構造となっている。
CSSも同様で、モジュールごとに用意されたCSSファイルをJavaScriptファイルでインポートしてバンドルする。これにより、使用されない大部分のコードを削減できる。コードの削減は、バンドラによるツリーシェイキングというステップを経て行われる。
以下は、ナビゲーションとページネーションを備えたスライダーを作るサンプルである。
modules
というプロパティで、インポートしたモジュール(Pagination
とNavigation
)を読み込んでいる。下部のpagination
プロパティ、navigation
プロパティは、modules
プロパティで該当のモジュールが読み込まれていないと用を成さない。v8からの流れで適当に使うと、ここでハマる。というかハマった。要注意ポイントだ。
上記コードを適当なバンドラ(webpackやrollupなど)でバンドルして、HTMLファイルで読み込む。これがSwiperの基本的な使い方である。
バンドラの設定
例えばwebpackでは、以下のような設定で必要なファイルをバンドルできる。
この設定だと、JavaScriptファイルでインポートしているCSSファイル(swiper/css
など)は、JavaScriptファイルが読み込まれた段階で<head>
タグ内にそれぞれ別の<style>
タグで追加される。ファイルを分けたいときは、style-loader
の代わりにMiniCssExtractPluginなどを使う。
HTMLでの読み込み
バンドルファイルを読み込むHTMLファイルは、以下のようになる。
実用に耐えないサンプルであるが、Swiperの大まかな使い方を理解するには十分かと思う。
CDNを使う場合
先に示したように、全モジュールをバンドルしたJavaScriptファイルとCSSファイルがCDNで提供されている。ファイルサイズを気にせず、手っ取り早くSwiperを使いたいという剛の者には、こちらの使い方が向いている。
以下は、CDNを利用した場合のデモである。
不細工なスライダーで、正しく動いているか疑わしいかもしれない。わかりやすさを心掛けて、公式ドキュメントで解説されている最小限のコードに留めた(本当は綺麗に装飾するのがただ面倒だった)。とはいえ、矢印をポチポチするとスライダーは正しく動くはずである。
Swiperのドキュメントの読み方
モジュールと、それに付随するCSSをインポートする。この構造を踏まえていれば、ドキュメントも読みやすい。
ドキュメントは、以下のような順番でまとめられている。
- HTMLの構造
- モジュールごとのCSSファイルの種類
- コア機能に指定できるパラメータ
- コア機能で使えるメソッドとプロパティ
- イベント
- 各モジュール
例えば自動再生機能が欲しければ、モジュールの一覧からそれっぽい名称(この場合はAutoplay)を探し、必要なパラメータを把握する。その上で、該当のCSSファイルとモジュールをインポートし、Sipwerコンストラクタに必要なパラメータを渡せば良い。
なお、各モジュールのパラメータは、モジュールと同名(ただしすべて小文字)のプロパティに設定する。
こんな感じである。