鈿★笍 Limited Black Friday Deal
Get 50% off on the React Three Fiber Ultimate Course with the promo code ULTIMATE50
Buy Now
Fundamentals
Core
Master
Shaders
Portafolio 3D
Responsivo
隆Tal vez tem铆as este momento pero es hora de hacer nuestro sitio web responsivo!
Ahora necesitamos recrear todo lo que hicimos para la versi贸n de escritorio, 隆pero para m贸vil!
Es broma 馃き, usaremos algunas t茅cnicas para que nuestra escena 3D luzca bien en dispositivos m贸viles.
Me gustar铆a resaltar que no hay una 煤nica soluci贸n perfecta para hacer que una escena 3D sea responsiva. Depende de muchos factores:
- La complejidad de la escena
- La cantidad de elementos
- Rendimiento
- Lo que deseas lograr
Para la parte de CSS, f谩cilmente haremos que nuestro sitio web sea responsivo con media queries.
useMobile
Usaremos dos t茅cnicas para hacer que nuestra escena 3D sea responsiva:
- Cambiar la posici贸n base y la escala de los elementos seg煤n el ancho disponible a nuestra disposici贸n. Despu茅s de un cierto umbral, cambiaremos a una versi贸n m贸vil.
- Ajustar finamente la posici贸n y escala de los elementos bas谩ndonos en un
scaleFactor
. Nuestra escena luce perfecta en una pantalla de1980px
pero, 驴qu茅 pasa con una pantalla de1600px
? Usaremos unscaleFactor
para ajustar la posici贸n y escala de los elementos para mantener la misma apariencia.
Vamos a crear un hook useMobile
en una carpeta src/hooks
para manejar ambas t茅cnicas:
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, }; };
Estamos usando el hook useState
para almacenar los valores scaleFactor
e isMobile
. Esto forzar谩 un re-renderizado cuando los valores cambien.
Usamos dos constantes para definir el ancho perfecto que usamos para posicionar nuestros elementos y el umbral m贸vil (cuando cambiamos a la versi贸n m贸vil).
Opt茅 por no usar el config
para esas variables
para hacer que este hook sea reutilizable en otros proyectos.
End of lesson preview
To get access to the entire lesson, you need to purchase the course.