feat: scroll animations
This commit is contained in:
parent
69a99c0013
commit
d9eb1bb3a4
5 changed files with 113 additions and 23 deletions
33
utils/Animation.tsx
Normal file
33
utils/Animation.tsx
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
import React from "react"
|
||||
import { motion, useAnimation } from "framer-motion"
|
||||
import { useInView } from "react-intersection-observer"
|
||||
|
||||
const AnimatedDiv = () => {
|
||||
const controls = useAnimation()
|
||||
const { ref, inView } = useInView()
|
||||
|
||||
React.useEffect(() => {
|
||||
if (inView) {
|
||||
controls.start("visible")
|
||||
} else {
|
||||
controls.start("hidden")
|
||||
}
|
||||
}, [controls, inView])
|
||||
|
||||
return (
|
||||
<div className="flex h-screen items-center justify-center">
|
||||
<motion.div
|
||||
ref={ref}
|
||||
initial="hidden"
|
||||
animate={controls}
|
||||
variants={{
|
||||
visible: { scale: 1, opacity: 1 },
|
||||
hidden: { scale: 0, opacity: 0 },
|
||||
}}
|
||||
transition={{ duration: 0.5 }}
|
||||
/>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
export default AnimatedDiv
|
||||
Loading…
Add table
Add a link
Reference in a new issue