Una pausa, justo aquí.
Este contenido aparece al entrar en el área visible.
Aparición al hacer scroll
Una sección que aparece con un fundido y sube suavemente al entrar en pantalla.
Ajustes
Código
import { motion } from "framer-motion";
const spring = { type: "spring" as const, stiffness: 300, damping: 30 };
interface ScrollRevealProps {
distance?: number;
/** true: caja de demo con scroll propio. false: solo la sección, que aparece con el scroll de la página. */
contained?: boolean;
}
export default function ScrollReveal({
distance = 28,
contained = true,
}: ScrollRevealProps) {
// whileInView observa el viewport y tiene en cuenta el recorte del contenedor, así sirve en ambos modos.
const section = (
<motion.div
initial={{ opacity: 0, y: distance }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: false, amount: 0.6 }}
transition={spring}
className="rounded-[22px] bg-white dark:bg-[#1c1c1e] p-6 text-[#1d1d1f] dark:text-[#f5f5f7] shadow-[0_1px_2px_rgba(0,0,0,0.03),0_8px_28px_rgba(0,0,0,0.05)]"
>
<h3 className="text-lg font-semibold sm:text-xl">Una pausa, justo aquí.</h3>
<p className="mt-2 text-sm text-[#86868b]">Este contenido aparece al entrar en el área visible.</p>
</motion.div>
);
if (!contained) return section;
return (
<div className="h-60 w-full overflow-y-auto rounded-2xl bg-black/5 p-5 dark:bg-white/10">
<div className="h-24" />
{section}
<div className="h-32" />
</div>
);
}
Prompt para IA
Pégalo en ChatGPT, Claude o Cursor y adaptará el bloque a tu proyecto con estos ajustes, aunque no uses React.
Más en Texto y scroll
Dónde usarlo
Una aparición suave al hacer scroll le da ritmo a una página larga, como si cada parte llegara justo al alcanzarla. Le va a los pasos de un «Cómo funciona», a los testimonios de un coach o a una página de venta. Así de sutil, una animación fade in al hacer scroll acompaña la lectura en vez de cortarla.
Deja la distancia pequeña, de 20 a 30 píxeles; saltos mayores parecen una carga lenta. No lo pongas en cada párrafo: revela secciones enteras y deja quieta la primera pantalla para que no haya nada oculto al abrir la página.