おしゃれなサイトでよく見る、画像のパララックスアニメーションの実装方法について解説しています。
この記事で解説しているパララックスとは、スクロールした際に画像が遅れて移動する動きを指します。WEBサイトに奥行きが生まれて、よりリッチなイメージを演出することができます。実装にはGSAPを使用しています。
実装例
下記が実装例です。
2パターンを用意しており、①デフォルトではy軸の移動量を5%/画像の拡大率を1.1倍/遅延を1.5秒、②カスタムした場合ではy軸の移動量を10%/画像の拡大率を1.2倍/遅延を2.5秒に設定しています。
解説
HTMLは次のとおりです。
パララックスさせたい画像の親要素にdata-parallax
属性を付与しています。カスタムする場合はdata-yで移動量を、data-scaleで拡大率を、data-delayで遅延時間をそれぞれ設定できるようにしています。
GSAPの処理を言語化
JavaScriptでは以下のコードを実行しています。
各行の実行内容はコメントに記載の通りです。
JavaScriptのNull合体演算子を用いて、y軸の移動量(y)と拡大率(scale)と遅延時間(delay)の初期値を設定しています。GSAPではfromTo
を使用し、アニメーション前後のCSSプロパティを指定しています。
scrollTriggerではscrub
を使用し、スクロール量に応じて各プロパティをアニメーションさせています。scrubはデフォルトでは1.5秒遅延させています。
easeはnone
を指定することで、アニメーションの変化の速度を一定に保っています。noneを指定しないと画像がビューポートの上部に来た際のアニメーションが緩やかになってしまします。
今回は移動量と拡大率と遅延時間のみをカスタマイズできるようにしてみました。より細かな制御をしたい場合は、simpleParallax等のライブラリを使用することをおすすめします。
参考サイト