Fundamentals
Core
Master
Shaders
3D Portfolio
Responsive
この瞬間を恐れていたかもしれませんが、ウェブサイトをレスポンシブにする時が来ました!
今、デスクトップバージョンで行ったすべての作業をモバイル用に再現する必要があります!
冗談です 🤭、モバイルでも3Dシーンが見栄えよくなるようにいくつかのテクニックを使用します。
3Dシーンをレスポンシブにするための完璧な解決策は1つではないことを強調したいです。多くの要因に依存します:
- シーンの複雑さ
- 要素の数
- パフォーマンス
- 達成したいこと
CSSの部分では、media queriesを使用して簡単にウェブサイトをレスポンシブにします。
useMobile
3Dシーンをレスポンシブにするために、次の2つのテクニックを使用します:
- 利用可能な幅に基づいてアイテムの基本位置とスケールを変更します。ある閾値を超えると、モバイルバージョンに切り替えます。
scaleFactor
に基づいてアイテムの位置とスケールを微調整します。1980px
の画面ではシーンが完璧に見えますが、1600px
の画面ではどうでしょうか?scaleFactor
を使用して、同じルックアンドフィールを維持するためにアイテムの位置とスケールを調整します。
この2つのテクニックを処理するために、src/hooks
フォルダーにuseMobile
フックを作成しましょう:
import { useState } from "react"; const REFERENCE_WIDTH = 1920; const MOBILE_THRESHOLD = 990; export const useMobile = () => { const [scaleFactor, setScaleFactor] = useState( window.innerWidth / REFERENCE_WIDTH ); const [isMobile, setIsMobile] = useState( window.innerWidth <= MOBILE_THRESHOLD ); return { scaleFactor, isMobile, }; };
useState
フックを使用してscaleFactor
とisMobile
の値を格納しています。これにより、値が変更されたときに再レンダリングが強制されます。
アイテムの位置を決めるために使用した完璧な幅とモバイルの閾値を定義するために2つの定数を使用しています。
このフックを他のプロジェクトでも再利用できるように、これらのvariables
にはconfig
を使用しないことにしました。
End of lesson preview
To get access to the entire lesson, you need to purchase the course.