Portfolio 3D
Responsivo
Forse temevi questo momento, ma è tempo di rendere il nostro sito web responsivo!
Ora dobbiamo ricreare tutto ciò che abbiamo fatto per la versione desktop, ma per i dispositivi mobili!
Sto scherzando ðŸ¤, useremo alcune tecniche per far sembrare la nostra scena 3D bella anche sui dispositivi mobili.
Vorrei sottolineare che non esiste una soluzione perfetta per rendere una scena 3D responsiva. Dipende da molti fattori:
- La complessità della scena
- Il numero di elementi
- Le prestazioni
- Cosa vuoi ottenere
Per la parte CSS, renderemo il nostro sito responsivo facilmente con le media queries.
useMobile
Utilizzeremo due tecniche per fare in modo che la nostra scena 3D sia responsiva:
- Cambiare la posizione di base e la scala degli elementi in base alla larghezza disponibile a nostra disposizione. Dopo una certa soglia, passeremo a una versione mobile.
- Affinare la posizione e la scala degli elementi in base a un
scaleFactor
. La nostra scena appare perfetta su uno schermo da1980px
, ma che dire di uno schermo da1600px
? Useremo unscaleFactor
per regolare la posizione e la scala degli elementi per mantenere lo stesso aspetto e sensazione.
Creiamo un hook useMobile
in una cartella src/hooks
per gestire entrambe le tecniche:
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, }; };
Stiamo usando l'hook useState
per memorizzare i valori di scaleFactor
e isMobile
. Questo forzerà un re-render quando i valori cambiano.
Usiamo due costanti per definire la larghezza perfetta che abbiamo usato per posizionare i nostri elementi e la soglia mobile (quando passiamo alla versione mobile).
Ho scelto di non usare la config
per queste variabili
per rendere questo hook riutilizzabile in altri progetti.
React Three Fiber: The Ultimate Guide to 3D Web Development
✨ You have reached the end of the preview ✨
Go to the next level with Three.js and React Three Fiber!
Get full access to this lesson and the complete course when you enroll:
- 🔓 Full lesson videos with no limits
- 💻 Access to the final source code
- 🎓 Course progress tracking & completion
- 💬 Invite to our private Discord community
One-time payment. Lifetime updates included.