React용 production-ready 모션 라이브러리
🚩 https://www.framer.com/motion
npm i framer-motion
import { motion } from "framer-motion"
export const MyComponent = ({ isVisible }) => (
< motion.div animate={{ opacity: isVisible ? 1 : 0 }} />
)
motion.
을 붙여야 한다.<motion.div></motion.div>
, <motion.header></motion.header>
const Box = styled(motion.div)``;
<motion.div initial={{ scale:0 }} />
<motion.div initial={{ scale:0 }} animate={{ scale:1 }} />
<motion.div animate={{ rotate: 180 }} transition={{ type: 'tween' }} />
const divVariants = {
visible: { scale: 0 },
hidden: { scale: 1, rotateZ: 360 },
}
<motion.div
variants={divVariants}
initial="hidden" // variants에서 설정한 key값 그대로 넣어준다.
animate="visible"
/>
특징) 기본적으로 자식 컴포넌트는 부모로부터 variant 변경 사항을 상속 받는다.
const divVariants = {
start: { scale: 0, opacity: 0 },
end: { scale: 1, opacity: 1, transition: { duration: 0.5 }},
}
return (
<Box variants={divVariants} initial="start" animate="end">
<Circle />
<Circle />
</Box>
)
<Circle />
컴포넌트에 아무 prop 이 설정되어있지 않더라도transition: { duration: 0.5 }
설정이<Circle />
컴포넌트에 상속되어 동일하게 0.5 뒤에 발생한다.delayChildren
staggerChildren
drag
를 적어주면 된다.< motion.div drag / >
< motion.div drag="x" / > // x축으로만 움직일 수 있당
whileDrag
: 드래그 제스처가 인식되는동안 애니메이션할 수 있는 속성< motion.div whileDrag={{ backgroundColor:"green" }} / >
// 박스를 잡고 드래그하는 동안 색상이 초록으로 변함
rgb
, hex
코드로 작성하면 된다.< motion.div whileDrag={{ backgroundColor:"rgb(46, 204, 113)" }} / >
// 이렇게 작성하면 흰색에서~점점 초록색으로 그라데이션 애니메이션이 발생한다.