| ํญ๋ชฉ | motion-one | framer-motion | GSAP |
|---|---|---|---|
| ๋ชฉ์ | Web Animations API ๊ธฐ๋ฐ ๊ฒฝ๋ ์ ๋๋ฉ์ด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ | React์ฉ์ผ๋ก ์ต์ ํ๋ ์ ์ธ์ ์ ๋๋ฉ์ด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ | ๋ฒ์ฉ ์ ๋๋ฉ์ด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (ScrollTrigger, Timeline ๋ฑ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ ํฌํจ) |
| ํฌ๊ธฐ | ๋งค์ฐ ์์ (~3KB) | ์ค๊ฐ (~30KB) | ๋น๊ต์ ํผ (~60KB ์ด์) |
| React ์นํ์ฑ | ๊ธฐ๋ณธ์ ๋ฎ์ (DOM ๊ธฐ๋ฐ), @motionone/react๋ก React ์ฌ์ฉ ๊ฐ๋ฅ | ๋งค์ฐ ์ข์ (<motion.div>, variants ๋ฑ) | ๋ฎ์ (React ๋น์ง์, DOM ์ง์ ์ ์ด ์์ฃผ) |
| ์คํฌ๋กค ์ ๋๋ฉ์ด์ | ์๋ ๊ตฌํ ํ์ (inView, animate ์ง์ ์ค์ ) | ๊ธฐ๋ณธ ์ ๊ณต (whileInView, ๊ฐ๋จํ ํธ๋ฆฌ๊ฑฐ๋ง ๊ฐ๋ฅ) | ๋งค์ฐ ๊ฐ๋ ฅ (ScrollTrigger, scrub, pin, timeline ๋ฑ ์ง์) |
| ํ์ ์์ ์ฑ (TS) | ๋ฎ์ (์ง์ ๋จ์ธ ํ์, ํ์ ์๋ ์ถ๋ก ์ฝํจ) | ๋์ (์ ์ ํ์ ์ถ๋ก ์ฐ์, ์ ๋ค๋ฆญ ๊ธฐ๋ฐ API) | ๋ณดํต (TS ์ง์์ ์์ง๋ง DOM ์ ๊ทผ ์ ๋จ์ธ ํ์) |
| ๋ณต์กํ ํ์ด๋ฐ/ํธ๋ฆฌ๊ฑฐ | ์ ํ์ (keyframes + delay ๋ฑ ์๋ ์กฐํฉ ํ์) | ์ค๊ฐ (variants, custom controls๋ก ์ ํ์ ๊ตฌํ ๊ฐ๋ฅ) | ๋งค์ฐ ๊ฐ๋ ฅ (timeline, label, ScrollTrigger ๋ฑ ์ธ๋ถ ์ ์ด ๊ฐ๋ฅ) |
| ๋ฌ๋ ์ปค๋ธ | ๋ฎ์ (๋จ์ํ ๋ฌธ๋ฒ, ๊ธฐ๋ณธ์ ์ธ DOM ์ ๋๋ฉ์ด์ ์์ฃผ) | ์ค๊ฐ (๊ณ ๊ธ ๊ธฐ๋ฅ์ ํ์ต ํ์: variants, layout animations ๋ฑ) | ๋์ (timeline, ScrollTrigger ๋ฑ ์๋ จ ํ์) |
๊ฐ๋จํ ์ ๋๋ฉ์ด์
+ React ์นํ์ฑ โก๏ธ framer-motion
e.g. ์ปดํฌ๋ํธ ๋ง์ดํธ/์ธ๋ง์ดํธ, ์ฌ๋ผ์ด๋, ํ์ด๋ ํจ๊ณผ ๋ฑ
๊ณ ์ฑ๋ฅ + Scroll ๊ธฐ๋ฐ ํธ๋ฆฌ๊ฑฐ ์ธ๋ถ ์ ์ด + ์ ๊ตํ ํ์ด๋ฐ ์ ์ด ํ์ โก๏ธ GSAP
e.g. ์คํฌ๋กค ์ฐ๋ ์ ๋๋ฉ์ด์
, ๋ณต์กํ ์ํ์ค ์ ๋๋ฉ์ด์
๊ฐ๋ณ๊ณ ๋จ์ํ ์ ๋๋ฉ์ด์
๋ง ํ์ + ๋ฒ๋ค ํฌ๊ธฐ ์ค์ โก๏ธ motion-one
e.g. ๊ฐ๋จํ hover/fade in, ํ๋ ์์ํฌ ๋
๋ฆฝํ ์ ๋๋ฉ์ด์