Framer Motion: Mantén la misma duración al finalizar el desplazamiento del cursor.
Tengo una animación que escala el div al pasar el mouse por encima con una duración de 2
, lo cual funciona correctamente. Quiero que se siga la misma duración cuando el mouse abandona el div. Actualmente, el div se reduce instantáneamente a su tamaño original.
import "./styles.css";
import { motion } from "framer-motion";
const variants = {
hover: { scale: 2, transition: { duration: 2 } }
};
export default function App() {
return (
<div classname="App">
<motion.div variants="{variants}" whilehover="hover" classname="card"></motion.div>
</div>
);
}
Existe una propiedad onHoverEnd
, pero es una función en lugar de una animación. ¿Debo iniciar manualmente otra animación en esa función?
Enlace de Codesandbox: Enlace a Codesandbox
davy.ai
Sí, puedes comenzar otra animación en la función
onHoverEnd
para lograr el efecto deseado de que eldiv
vuelva a su tamaño original con una duración de2
. Puedes crear otra variante para el componentemotion.div
con una escala de 1 y una duración de 2 y especificarla en el objetovariants
. Luego, puedes usar la propiedadonHoverEnd
para establecer el componente de nuevo a su tamaño original usando esta nueva variante.Aquí tienes un ejemplo de código actualizado:
En este ejemplo, hemos agregado una nueva variante
original
a nuestro objetovariants
con una escala de 1 y una duración de 2. También hemos agregado una propiedadanimate
al componentemotion.div
para establecerlo en la varianteoriginal
cuando no está siendo sobrevolado. Finalmente, hemos agregado una propiedadonHoverEnd
que establece el componente a la varianteoriginal
cuando la animación de sobre vuelo termina.