正式な名称は不明ですが、ときどき見かける「スクロール量に応じて要素が縦に移動するアニメーション」の実装方法について解説しています。実装にはGSAPを使用しています。
実装例
下記が実装例です。
対象の要素は通常の要素より縦方向への移動量が大きくなるため、より手前(画面の前面)に配置されているように見えます。
以下のサイトのHistoryセクションの画像にも同じようなアニメーションが実装されています。
余計なものは入れない。Pascoの超熟余計なものは入れない。解説
アニメーションの対象となる要素のHTMLは次のとおりです。
移動させたい画像の親要素にdata-parallax-front
属性を付与しています。カスタムデータ属性のdata-yで移動量を、data-delayで遅延時間をそれぞれ設定できるようにしています。
GSAPの処理を言語化
JavaScriptでは以下のコードを実行しています。
各行の実行内容はコメントに記載の通りです。
scrubの値を定義
scrollTriggerのscrub
に渡す数値を定義しています。data-delayに値を設定しなかった場合は、初期値として0.4が代入されます。
data-delayに値を設定した場合は、parseFloat()
で文字列を浮動小数点に変換(文字列を数値に変換)した値を代入します。
子要素を取得
children
プロパティでitemの子要素を取得しています。children
では全ての子要素を取得するため、data-parallax-frontの中の要素は1つにすることがポイントです。
参考サイト