考え方
二次元世界にjavascriptで パースペクティブ環境を構築
- パララックスとは…視差のこと
パララックス効果は現実世界でも身近に経験する現象です。
例えば列車に乗っている時、手前の景色はどんどん過ぎ去っていきますが遠くの風景ほどゆっくりと後方へ動いていきます。
これが視差で、異なる速度で動く要素が重なり合うことで生じる奥行き感のことです。
ウェブデザインではこの視差を利用したエフェクトをパララックス効果といいます。
この効果は、ユーザーに動きや立体感を与え、ウェブページをより魅力的に見せるために利用されます。
今では普通にWEBサイトで使われていますね。
以下でこの効果を実装し開発経緯を解説します。 - CSSとJavaScriptで再現する
JavaScriptは要素のスクロール位置を検知し、それに応じて要素の位置やスタイルを変更することで、パララックス効果を実現します。一方、CSSは要素のスタイルやアニメーションを制御し、視覚的な表現を補完します。この組み合わせにより、滑らかで魅力的なパララックス効果を目指します。
- 他の方法でパララックス
視差を利用しなくてもオブジェクトのスクロール量を調整することで疑似的にパララックス効果を表現することが可能です。
オブジェクト個別にスクロールによる移動量を変更することで見た目の視差効果を得られます。
これはこれでシンプルな方法ですが、本プロジェクトでは現実世界の視差を利用した効果をしょうかいしとりあげます。
また、慣性スクロールが付いてるパララックスライブラリも多いですが、これは副次的なものでパララックスとは別の効果になります。 - パララックスの基本的なサンプル
MDNのサンプルキューブをスクロールでperspective-origin値を変更させるサンプル。
perspective-origin値を変更するだけでパララックス効果を表現できるサンプルです。
このサンプルを見てわかるのは枠があるとパララックス効果は現実とは逆に感じるということです。
実際のピクセル値は手前ほど多く、遠景ほどゆっくりなのですが、画面自体が上下するため、子要素と画面との相対距離が短い手前ほどゆっくり、相対距離が長い遠景ほど、速く動いていく様に見えるということです。
これを現実と同じく見えるようにするには、要素の枠を”overflow: visible”で消せば問題ありません。
パララックスの基礎をキューブで考える:https://labo.studio-happyvalley.com/parallaxImg/basic/