Start by installing react intersection observer
import React, { useEffect } from "react";
import { useInView } from "react-intersection-observer";
import { motion, useAnimation } from "framer-motion";
const nameVariant = {
visible: { x: 50, y: 150, transition: { delay: 5, duration: 2 } },
hidden: { x: 450, y: 250 },
};
const YOURCOMPONENT = () => {
const control = useAnimation();
const [ref, inView] = useInView();
useEffect(() => {
if (inView) {
control.start("visible");
} else {
control.start("hidden");
}
}, [control, inView]);
return (
<motion.div
ref={ref}
variants={nameVariant}
initial="hidden"
animate={control}
className="title w-full relative flex">
<h1>Hello my friend</h1>
</motion.div>
)
}