スクロールすると要素が奥行きを持って立体的に重なるアニメーション
今回もおしゃれなサイトでよく見る、スクロールに応じて要素が奥行きを持って立体的に重なるアニメーションの実装方法について解説しています。実装にはGSAPを使用しています。
実装例
下記が実装例です。
スクロールに応じてグレーの背景エリアが重なり、立体感を演出しています。実際には画像やリストになっているアイテムなどをアニメーションさせることが最適かなと思います。
解説
今回はCSSで各アイテムの高さを便宜上指定していますが、必須ではありません。中の要素の高さに依存する形でOKです。
GSAPの処理を言語化
GSAPのでは以下のコードを実行しています。
各行の実行内容はコメントに記載の通りです。
[data-item]
属性の要素をy軸方向に250%移動させ、サイズを0.82倍に縮小しています。立体感を演出するために、移動距離と縮小率は要素ごとに変えています。
要素の中央がビューポートの中央に重なる時にアニメーションがスタートし、[data-wrapper]
属性の要素の底部がビューポートの中央に重なる時にアニメーションが終了します。
今回の例では3つ目のアイテムが画面中央に来る頃には1つ目のアイテムは完全に見えなくなっていますが、y軸の移動距離と縮小率を調整することで3つのアイテムの重なりを画面内で表現することも可能です。