일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 글또
- 캐나다취준
- JUNCTION2023
- TS
- 캐나다개발자
- 회고
- 타입스크립트
- typescript
- 이펙티브타입스크립트
- 시스템디자인
- SemVer
- JSBridge
- ASP.NET
- Effective Typescript
- 개발자 원칙
- useState
- Semantic Versioning
- 테오의 스프린트
- 코드트리
- framer-motion
- CSS방법론
- CSS
- 글또 10기
- framer
- 개발자를 위한 글쓰기 가이드
- react
- React-Router-Dom
- Framer motion
- VS Code
- 알고리즘
- Today
- Total
큰 꿈은 파편이 크다!!⚡️
Framer motion 순한맛 찍먹 본문
Intro 🍠🍞🥕
애니메이션이 서비스를 더 재미있게 만들어주고, 더 사용하고 싶어지게 만들어준다고 생각되는 요즘, 스터디를 통해 framer-motion
을 학습해보게 되었다.
Framer는 interactive 디자인을 도와주는 툴인데, 그중에서 Motion은 리액트를 위한 production-ready(실제 제품 단계의) motion library를 표방하며, 오픈 소스로 공개되어 있다. 특징으로 내세우는 것 중 하나는 effortless layout transitions and gestures, 즉 transition과 gesture를 고려할 때 노력이 필요없다..!는 점이다.
사실 나는 여기까지 정리하고서도 이해가 어려웠기에 공식문서의 예제를 사용해 사용 전/후 비교용 switch 컴포넌트를 만들어 보았다.
motion.div
를 사용한 경우, knob(흰색 동그라미)이 flex-start와 flex-end로 변화할 때(즉, 리렌더링이 발생할 때) 애니메이션이 나타나 자연스럽게 이동하는 것처럼 보인다.- 사용하지 않은 경우, knob은 텔레포트하는 것처럼 뚝뚝 끊기는 느낌이 든다.
yarn add framer-motion
React 16.8 이상으로 CRA 후 framer-motion 라이브러리를 설치한다. 어찌보면 parameter를 적재적소에 넣는게 핵심이다보니 직접 여러가지를 사용해보면서 익혀가는게 좋을 것 같았다. 문서를 참고하여 간단한걸 직접 만들어보는 시간을 가졌다.
Gesture: whileHover
사용자가 뭔가 행위(gesture)를 했을 때, 그중에서도 hover중일 때 y 방향으로 -5만큼 올라가는 카드 컴포넌트다. 웹에서 hover임을 표시할 때에는 항상 색상을 바꾸는 방식을 사용했는데 마우스를 올렸을 때 무엇이 선택되어 있는지 조금 더 역동적으로 보여준다는 느낌이 들었다.
<motion.div whileHover={{ y: -5 }}>
UP!
</motion.div>
Transition
Transition을 사용하여 모바일처럼 새로운 페이지가 뜰 때 옆에서 스르륵 튀어나오도록 만들어보았다.
하지만 사실 이건.. AnimationPresence
와 react-router-dom
을 사용해서 page navigation 시 default로 구성되도록 할 수도 있다. 이 글을 참고하자!
Transition + Animate
Animate와 Transition을 함께 사용하여 하트가 펌핑하는 듯한 애니메이션을 만들었다. keyframe
대신 아래와 같이 간단하게 표현할 수 있었다.
animate={{
scale: [1, 2, 1],
opacity: [0.8, 0.4, 0.8]
}}
마무리
· framer-motion은 지금도 조금씩 사용해보고 있다. 연습을 거쳐 다음엔 매운맛🧅🌶🧄 찍먹 편으로 돌아오려 한다.
· 올릴만한 예제를 직접 만들려고 하다보니 글쓰기보다 예제 만들어보는데 시간이 더 걸린 것 같지만.. 단순히 예제와 기능의 나열이 아닌 내가 전달하고 싶은 것을 이해하고, 직접 구성하여 보여주는 것이 의미있었다.
'Web FE' 카테고리의 다른 글
🔨 웹에서 RTSP 스트리밍 + video autoplay 삽질기 (0) | 2022.07.23 |
---|---|
🍪 쿠키와 세션 (feat. 웹에서 로그인을 유지하는 원리) (0) | 2022.07.09 |
예제로 이해하는 React Custom Hook (0) | 2022.06.25 |
react router dom6 적용하기 (0) | 2022.02.27 |
setState가 비동기인 이유? (0) | 2021.09.23 |