framer-motion 설치npm install framer-motion
motion 컴포넌트import { motion } from 'framer-motion';
function App() {
return (
<motion.div
animate={{ x: 100 }}
transition={{ duration: 0.5 }}
style={{ width: 100, height: 100, backgroundColor: 'red' }}
/>
);
}
export default App;
초기상태 & 애니메이션 정의<motion.div
initial={{ opacity: 0 }}
animate={{ opacity: 1 }}
transition={{ duration: 1 }}
>
Hello, Denamu
</motion.div>
initial : 초기 상태값을 정의한다. 위의 예시에는 opacity를 0으로 해서 서서히 나타나도록 한다.
animate : 최종 상태값을 정의한다
transition : 애니메이션의 전환 방식을 정의한다
| duration | 애니메이션이 진행되는 시간(ms) |
|---|---|
| delay | 애니메이션이 시작되기 전 대기시간(ms) |
| ease | 애니메이션 실행 가속도(easeIn, easeOut, easeInOut) |
| type | 애니메이션 진행 방식(spring tween) |
| repeat | 애니메이션 반복 횟수(infinity) |
| repeatType | 애니메이션 반복 방식(loop, mirror, reverse) |
hover & tap 시 애니메이션<motion.button
whileHover={{ scale: 1.2 }}
whileTap={{ scale: 0.9 }}
>
클릭!
</motion.button>
whileHover : 마우스가 요소 위에 올라왔을 때 애니메이션을 정의한다.whileTap : 요소를 클릭할 때 애니메이션을 정의한다.Variants 를 이용해 복잡한 애니메이션 관리