Ir al contenido

Efectos

Senzu trae un catálogo de efectos de front con receta por stack (Astro, Next/React, Vue/Inertia): se piden en llano («ponle un parallax», «que caiga el logo y se rompa la pantalla») o con /efecto, y el agente abre SOLO la receta de ese efecto. Todos tienen versión para «reducir movimiento» y su coste en móvil decidido.

Archivos HTML autocontenidos: se abren con doble clic y son la base que el agente adapta al proyecto.

Un objeto cae, golpea la pantalla, se agrieta y el cristal se rompe en trozos que caen dejando ver la web. También como loader que se agrieta mientras carga.

  • Demo: intro-rotura.html
  • Receta: fisica-impacto.md §intro o loader con caída y pantalla rota
  • Dependencias: ninguna
  • Interacción: Botón «Saltar intro» y Escape
  • Con «reducir movimiento»: Sin intro
  • En móvil: Menos trozos y objeto más pequeño
  • Pruébala: ?intro=1 (la fuerza aunque ya se viera en la sesión) · ?intro=1&modo=loader (modo loader: las grietas avanzan con la carga y se rompe al terminar)

Un objeto elegido cae por encima de la web, choca con los bloques reales, se apoya en el destino y se puede coger y lanzar.

  • Demo: objeto-cae.html
  • Receta: fisica-impacto.md §objeto que cae encima de todo
  • Dependencias: matter-js 0.20.0 (MIT; CDN jsdelivr, al ver el destino)
  • Interacción: Arrastrar y lanzar el objeto
  • Con «reducir movimiento»: Aparece ya apoyado, sin cargar el motor
  • En móvil: Destino propio (data-fisica-destino-movil): los bloques se apilan

Con un botón, los elementos de la página caen con gravedad y se apilan; se arrastran y se lanzan, y Escape los devuelve a su sitio.

  • Demo: pagina-desmorona.html
  • Receta: fisica-impacto.md §la página se desmorona
  • Dependencias: matter-js 0.20.0 (MIT; CDN jsdelivr, al pulsar el botón)
  • Interacción: Botón «Activar gravedad», arrastrar, Escape o «Recomponer»
  • Con «reducir movimiento»: Sin botón de gravedad
  • En móvil: Igual, con las paredes de la pantalla

La página se ve normal; un clic o un objeto que cae la golpea, se agrieta y se parte en trozos que son la propia web (texto real, sin capturas) y caen girando en 3D. Detrás aparece lo que elijas.

  • Demo: web-rota.html
  • Receta: fisica-impacto.md §la web se rompe como un cristal
  • Dependencias: ninguna
  • Interacción: Botón «Romper la web» (rompe donde pulsas), Escape la salta, «Volver» la recompone
  • Con «reducir movimiento»: Fundido a lo de detrás, sin rotura
  • En móvil: Menos trozos y temblor más corto
  • Pruébala: ?auto=1 (un objeto cae a los 0,8 s y rompe la web (modo intro))
Efecto Skill y receta Stacks Con «reducir movimiento» Coste en móvil
Parallax multicapa (multi-layer parallax) gsap-scrolltrigger → scrolltrigger-patterns.md §5 Parallax por capas Todos Desactivar (capas estáticas) Medio
Parallax de imagen en contenedor (image parallax in container) gsap-scrolltrigger → effects-pro.md §Parallax de imagen en contenedor Todos Imagen fija Bajo
Zoom parallax (scrub) (parallax zoom) gsap-scrolltrigger → scrolltrigger-patterns.md §11 Imagen con zoom Todos Imagen a escala 1 Medio
Sección fija con pin (sticky pinned section) gsap-scrolltrigger → scrolltrigger-patterns.md §3 Pin + scrub timeline Todos Sin pin, contenido en flujo Medio
Stacking cards (stacked cards) gsap-scrolltrigger → effects-pro.md §Stacking cards completo Todos Cards apiladas sin pin Medio
Scroll horizontal (horizontal scroll) gsap-scrolltrigger → scrolltrigger-patterns.md §4 Horizontal scroll section Todos Scroll vertical normal Alto
Scroll-velocity (skew on scroll) gsap-scrolltrigger → effects-pro.md §Scroll velocity skew Todos Desactivar skew Medio
Header que se oculta (header hide-show) gsap-scrolltrigger → scrolltrigger-patterns.md §8 Sticky header que se oculta al bajar Todos Mantener (sin animación de entrada) Bajo
Progress de lectura (barra) (reading progress bar) gsap-scrolltrigger → scrolltrigger-patterns.md §6 Progress bar de lectura Todos Mantener (informativo) Bajo
Progress de lectura (circular) (circular progress) gsap-scrolltrigger → common_patterns.md §11.2 Circular Progress Indicator Todos Mantener (informativo) Bajo
Smooth scroll (Lenis) (smooth scrolling) gsap-scrolltrigger → useLenis.ts §7 Lenis con React) Todos Desactivar Lenis (scroll nativo) Medio
Cambio de tema por sección (section theme switch) gsap-scrolltrigger → scrolltrigger-patterns.md §14 Cambio de tema/color de fondo por sección Todos Cambio instantáneo sin tween Bajo
Scrollspy (active nav on scroll) gsap-scrolltrigger → scrolltrigger-patterns.md §15 Navegación activa Todos Mantener (informativo) Bajo
Efecto Skill y receta Stacks Con «reducir movimiento» Coste en móvil
Reveal por líneas (text reveal by lines) gsap-scrolltrigger → scrolltrigger-patterns.md §10 Texto por líneas con SplitText Todos Texto visible sin animar Bajo
Reveal por caracteres (text stagger by chars) gsap-scrolltrigger → common_patterns.md §5.4 Text Stagger Todos Texto visible sin animar Medio
Scramble (scrambled text) gsap-scrolltrigger → common_patterns.md §7.2 Scrambled Text Effect Todos Mostrar texto final directo Bajo
Typewriter (máquina de escribir) gsap-scrolltrigger → common_patterns.md §7.3 Typewriter Effect Todos Mostrar texto final directo Bajo
Texto degradado con brillo (gradient text) ui-ux-pro-max → modern-look.md §7 Todos Mantener (es estático) Bajo
Contador numérico (number counter) gsap-scrolltrigger → scrolltrigger-patterns.md §7 Contador numérico Todos Mostrar valor final directo Bajo
Efecto Skill y receta Stacks Con «reducir movimiento» Coste en móvil
Image reveal cortina (curtain reveal) gsap-scrolltrigger → common_patterns.md §8.1 Image Curtain Reveal Todos Imagen visible sin animar Bajo
Image reveal clip-path (scale reveal) gsap-scrolltrigger → common_patterns.md §8.2 Image Scale Reveal Todos Imagen visible sin animar Bajo
Before/after slider (comparación de imágenes) gsap-scrolltrigger → effects-pro.md §Before after slider Todos Mantener (control manual) Bajo
Video scrubbing por frames (canvas) (canvas image sequence) gsap-scrolltrigger → scrolltrigger-patterns.md §13 Hero con video scrubbing por frames Todos Poster estático Alto
Video scrubbing con currentTime (video.currentTime scrub) gsap-scrolltrigger → effects-pro.md §Video scrubbing con currentTime Todos Poster estático o play normal Alto
Galería con filtros animados (Flip gallery filters) gsap-scrolltrigger → effects-pro.md §Filtros de galería con Flip Todos Filtrar sin animación Medio
Marquee infinito (infinite marquee) gsap-scrolltrigger → effects-pro.md §Marquee infinito Todos / solo React Pausar o desacelerar mucho Medio
Galería infinita (infinite gallery) gsap-scrolltrigger → effects-pro.md §Galería infinita Todos Galería estática con scroll nativo Alto
Efecto Skill y receta Stacks Con «reducir movimiento» Coste en móvil
Cursor personalizado (custom cursor) gsap-scrolltrigger → effects-pro.md §Cursor personalizado Todos Cursor nativo (sin follower) Bajo (desactivar en táctil)
Botón magnético (magnetic button) modern-web-design → interaction_patterns.md §1.3 Magnetic Button Todos Hover simple sin atracción Bajo (desactivar en táctil)
Zoom de imagen en hover (image zoom on hover) modern-web-design → interaction_patterns.md §5.1 Image Zoom on Hover Todos Sin zoom Bajo
Spotlight card (borde sigue al ratón) (mouse-tracking spotlight) ui-ux-pro-max → modern-look.md §6 Spotlight card Todos Sin spotlight (borde estático) Bajo (desactivar en táctil)
Botón shine-glow (shiny button) ui-ux-pro-max → modern-look.md §7 Botones y texto con brillo Todos Hover simple sin barrido Bajo
Tilt 3D en cards (3D tilt with glare) lightweight-3d-effects → tilt_patterns.md §Glare Effect Todos Card plana sin tilt Bajo (desactivar en táctil)
Efecto Skill y receta Stacks Con «reducir movimiento» Coste en móvil
Aurora (mesh en CSS puro) ui-ux-pro-max → modern-look.md §4 Aurora Todos Gradiente estático (sin drift) Bajo
Grano-noise overlay (film grain) ui-ux-pro-max → modern-look.md §4 Todos Mantener (es estático) Bajo
Fondo animado Vanta (Vanta.js background) lightweight-3d-effects → vantajs_effects.md Todos Fondo estático (gradiente CSS) Alto
Aurora de librería (library aurora background) animated-component-libraries → react_bits_components.md §Aurora solo React Gradiente estático Alto
Mesh gradient en shader propio (custom mesh gradient shader) threejs-webgl → shaders-basics.md §Mesh gradient / aurora en shader propio Todos Gradiente estático Alto
Partículas ligeras (lightweight particles) threejs-webgl → shaders-basics.md §6.4 Partículas Todos / solo React Sin partículas o estáticas Medio
Efecto Skill y receta Stacks Con «reducir movimiento» Coste en móvil
Transiciones de página SPA (Vue) (SPA page transitions) gsap-scrolltrigger → vue.md §5 Transiciones de página Vue/Nuxt Fade corto o corte directo Bajo
Transiciones de página SPA (Next) (SPA page transitions) gsap-scrolltrigger → next.md §6 ScrollTrigger y rutas de Next Next/React Fade corto o corte directo Bajo
Transiciones de página SPA (Astro) (SPA page transitions) gsap-scrolltrigger → astro.md §5 Transiciones de página con GSAP Astro Fade corto o corte directo Bajo
Transiciones de página MPA (Barba.js page transitions) barba-js → transition_patterns.md MPA/estático Corte directo sin transición Medio
Efecto Skill y receta Stacks Con «reducir movimiento» Coste en móvil
Hover distortion WebGL (WebGL image distortion) threejs-webgl → shaders-basics.md §6.3 Hover distortion sobre una imagen Todos Imagen plana <img> Alto
Displacement 2D (PixiJS displacement filter) pixijs-2d → filters_effects.md §DisplacementFilter Todos Imagen plana sin filtro Alto

Lo más ligero: sin JS, en el hilo de composición. Empieza aquí antes de meter una librería; siempre dentro de @supports.

Efecto Skill y receta Stacks Con «reducir movimiento» Coste en móvil
Animación ligada al scroll (scroll-driven animation) front-activation → css-moderno.md §Animación ligada al scroll Todos Estado final estático Bajo
Reveal al entrar en pantalla (CSS) (view() reveal) front-activation → css-moderno.md §Reveal al entrar en pantalla Todos Sin animación (visible) Bajo
View Transitions entre páginas (cross-document view transitions) front-activation → css-moderno.md §View Transitions entre páginas MPA: Astro, Blade, WordPress Sin transición Bajo
Entradas con @starting-style (entry transitions) front-activation → css-moderno.md §Entradas con starting-style Todos Aparición instantánea Bajo
Tooltips y menús anclados (anchor positioning) front-activation → css-moderno.md §Anchor positioning Todos Mantener (sin animación) Bajo
Galería con scroll-snap (scroll snap gallery) front-activation → css-moderno.md §Scroll-snap con estado Todos Mantener Bajo

Siluetas, cortes y máscaras: lo que más aleja de la web de cajas. Una familia de formas por proyecto, fijada en el MASTER.

Efecto Skill y receta Stacks Con «reducir movimiento» Coste en móvil
Blob orgánico (organic blob) front-activation → formas-svg.md §Blob orgánico Todos Forma estática Bajo
Separadores de onda, curva o diagonal (section dividers) front-activation → formas-svg.md §Separadores entre secciones Todos Mantener (estático) Bajo
Morph de clip-path (clip-path reveal) front-activation → formas-svg.md §Morph de clip-path Todos Recorte final directo Bajo
Máscara de imagen con forma (shaped image mask) front-activation → formas-svg.md §Máscaras de imagen con forma Todos Mantener (estático) Bajo
Dibujado de trazo (SVG line drawing) front-activation → formas-svg.md §Dibujado de trazo Todos Trazo completo Bajo
Morph entre formas o iconos (shape morph) front-activation → formas-svg.md §Morph entre formas Todos Cambio instantáneo Bajo
Texto sobre una curva (text on path) front-activation → formas-svg.md §Texto sobre una curva Todos Sin rotación Bajo

Cuando la tipografía ES el diseño. Una pieza protagonista por página; nunca animar párrafos de lectura.

Efecto Skill y receta Stacks Con «reducir movimiento» Coste en móvil
Fuente variable animada (variable font animation) front-activation → tipografia-cinetica.md §Fuente variable animada Todos (fuente con ejes) Peso fijo Bajo
Vídeo dentro del texto (video text mask) front-activation → tipografia-cinetica.md §Vídeo dentro del texto Todos Poster fijo (vídeo pausado) Medio
Texto que se resalta al leerlo (highlight on scroll) front-activation → tipografia-cinetica.md §Texto que se resalta al leerlo Todos Resaltado ya aplicado Bajo
Split-flap (panel de aeropuerto) (split-flap text) front-activation → tipografia-cinetica.md §Split-flap Todos Palabra final directa Bajo
Titular gigante con scroll (oversized scrolling headline) front-activation → tipografia-cinetica.md §Titular gigante con scroll Todos Titular estático Medio
Texto que rodea una forma en movimiento (Pretext) (text wrap around moving shape) front-activation → tipografia-cinetica.md §Texto que rodea una forma en movimiento Todos (navegador) Forma quieta, una sola maquetación Medio
Titular que se reajusta al cambiar el ancho (Pretext) (reflowing headline) front-activation → tipografia-cinetica.md §Titular que se reajusta mientras cambia el ancho Todos (navegador) Sin animación de ancho Bajo
Altura exacta para listas y masonry (Pretext) (exact text height) front-activation → tipografia-cinetica.md §Altura exacta para listas y masonry Todos (navegador) Mantener Bajo
Texto multilínea en canvas o WebGL (Pretext) (canvas text wrapping) front-activation → tipografia-cinetica.md §Texto en canvas o WebGL con saltos de línea Todos (canvas, Three, Pixi) Mantener Medio

Respuestas de 150-300 ms que informan de algo. Si no informa, es decoración.

Efecto Skill y receta Stacks Con «reducir movimiento» Coste en móvil
Estados de botón (cargando → hecho) (button states) front-activation → microinteracciones.md §Estados de botón Todos Cambio de estado sin transición Bajo
Toggle y checkbox animados (animated toggle) front-activation → microinteracciones.md §Toggle y checkbox animados Todos Sin transición Bajo
Skeleton con brillo (shimmer skeleton) front-activation → microinteracciones.md §Skeleton con brillo Todos Skeleton estático Bajo
Like con explosión (like burst) front-activation → microinteracciones.md §Like con explosión Todos Cambio de icono sin partículas Bajo
Toasts apilables (stacked toasts) front-activation → microinteracciones.md §Toasts apilables Todos Aparición instantánea Bajo
Loader con marca (branded loader) front-activation → microinteracciones.md §Loader con marca Todos Loader estático o texto Bajo
Menú a pantalla completa (fullscreen menu) front-activation → microinteracciones.md §Menú a pantalla completa Todos Apertura instantánea Bajo
Hamburguesa que se transforma (morphing burger) front-activation → microinteracciones.md §Hamburguesa que se transforma Todos Cambio de icono directo Bajo
Preloader con porcentaje real (real-progress preloader) front-activation → microinteracciones.md §Preloader con porcentaje Solo con assets pesados (3D, vídeo) Barra sin animación Bajo
Intro de marca (brand intro) front-activation → microinteracciones.md §Intro de marca Todos Sin intro Medio

Objetos con gravedad, choques y cristal que se rompe. Demos que funcionan en references/recipes/demos/. Uno por página, con intención (al entrar una vez, al pulsar o al llegar), saltable, y el motor cargado solo cuando se usa.

Efecto Skill y receta Stacks Con «reducir movimiento» Coste en móvil
Intro con caída y pantalla rota (falling object + shattered screen intro) front-activation → fisica-impacto.md §Intro o loader Todos Sin intro Medio (menos trozos)
Loader que se agrieta con la carga y se rompe al terminar (cracking loader) front-activation → fisica-impacto.md §Intro o loader Solo con carga pesada real Barra o texto de carga Medio
La web se rompe como un cristal (trozos = la propia página) (real page shatter) front-activation → fisica-impacto.md §La web se rompe como un cristal Todos Fundido a lo de detrás Medio (menos trozos)
Pantalla o sección que se rompe (screen shatter) front-activation → fisica-impacto.md §Pantalla que se rompe Todos Sin rotura (estado final) Medio
Objeto que cae encima de todo y se apoya (object drop onto page) front-activation → fisica-impacto.md §Objeto que cae Todos (3D: react-three-rapier) Aparece ya apoyado Medio (2D) · Alto (3D)
La página se desmorona (page gravity collapse) front-activation → fisica-impacto.md §La página se desmorona Todos Sin botón Medio
Arrastrar y lanzar con inercia (drag and throw) front-activation → fisica-impacto.md §Arrastrar y lanzar Todos Arrastre sin inercia Bajo
Confeti con física (physics confetti) front-activation → fisica-impacto.md §Confeti Todos Sin confeti (disableForReducedMotion) Bajo
El producto explota en partículas (particle explode) front-activation → fisica-impacto.md §El producto explota + skill threejs-webgl Todos (canvas) Imagen fija Alto
Tela, cuerda, gelatina (verlet cloth & rope) front-activation → fisica-impacto.md §Tela, cuerda y gelatina Todos (canvas) Estático Bajo

Coste ALTO: máximo uno por página, lazy, con fallback estático en móvil. Solo si aporta al mensaje.

Efecto Skill y receta Stacks Con «reducir movimiento» Coste en móvil
Fluido que sigue al ratón (fluid simulation) front-activation → webgl-avanzado.md §Fluido que sigue al ratón Todos (canvas) Fondo estático Alto
Metaballs (metaballs shader) front-activation → webgl-avanzado.md §Metaballs Todos (canvas) Imagen estática Alto
Dithering, ASCII y píxel (dither-ascii-pixel post) front-activation → webgl-avanzado.md §Dithering, ASCII y píxel Todos Imagen procesada estática Alto
Globo 3D ligero (3D globe (cobe)) front-activation → webgl-avanzado.md §Globo 3D Todos Globo sin rotación Medio
Liquid glass (refractive glass) front-activation → webgl-avanzado.md §Liquid glass Todos (refracción solo Chromium) Cristal sin distorsión Medio
Ruido animado en shader (animated shader noise) front-activation → webgl-avanzado.md §Ruido animado en shader Todos Grano estático Medio
  • prefers-reduced-motion es obligatorio: implementa el fallback de la columna Reduced-motion con gsap.matchMedia() (ver gsap-scrolltrigger → references/es/performance-a11y.md §6) o media query CSS.
  • Anima solo transform y opacity; nada de top/left/width/height/filter en scroll (provocan layout/paint por frame).
  • Nada de scroll-jacking ni pin en páginas o secciones con formularios, checkout o contenido largo de lectura.
  • Presupuesto móvil: máximo un efecto de coste Alto por página; en móvil degrada o desactiva (ScrollTrigger.matchMedia / detección de puntero táctil) los efectos de coste Alto.
  • Limpieza al desmontar: gsap.context() + revert(), ScrollTrigger.kill(), lenis.destroy(), effect.destroy() (Vanta/Pixi/Three) en el unmount del componente.