tools
انتخاب ابزار مناسب برای هر نوع انیمیشن، از CSS ساده تا رندر ویدیو با Remotion
این اسکیل برای انتخاب ابزار مناسب انیمیشن بین CSS، GSAP، Framer Motion، Motion One، Lottie، Rive و Remotion راهنمایی ارائه میکند. بر اساس پیچیدگی توالی، نیاز به تعامل، نوع پروژه و حجم باندل، گزینه مناسب را پیشنهاد میدهد.
همچنین برای هر ابزار الگوهای پیادهسازی عملی ارائه میکند تا بتوانید ترنزیشنها، انیمیشنهای stateful، توالیهای دقیق و خروجی ویدیویی را سریعتر و با تصمیم فنی بهتر بسازید.
چه چیزی میگیرید
- درخت تصمیم برای انتخاب ابزار انیمیشن مناسب
- مقایسه ابزارها از نظر کاربرد، حجم باندل و دشواری یادگیری
- نمونهکدهای آماده برای CSS، GSAP، Framer Motion و Motion One
- راهنمای انتخاب Rive، Lottie و Remotion برای نیازهای تعاملی و ویدیویی
- الگوهای قابل استفاده برای ترنزیشن، timeline و اجرای توالیهای پیچیده
برای چه کاری خوب است
- توسعهدهندگان frontend که بین چند کتابخانه انیمیشن مردد هستند
- تیمهایی که میخواهند حجم باندل و پیچیدگی فنی را کنترل کنند
- پروژههای React، وب تعاملی، انیمیشنهای stateful یا تولید ویدیو
برای چه کاری نیست
- ساخت یک انیمیشن کامل بدون نیاز به تصمیمگیری درباره ابزار
- پروژههایی که فقط به طراحی بصری یا storyboard نیاز دارند
- وقتی ابزار انیمیشن از قبل قطعی شده و به مقایسه یا الگوی پیادهسازی نیاز ندارید
دربارهٔ این اسکیل
Animation Tools
Tool selection guide and implementation patterns.
Tool Comparison
| Tool | Best For | Bundle Size | Learning Curve |
|---|---|---|---|
| CSS | Simple transitions | 0kb | Low |
| GSAP | Complex sequences | ~60kb | Medium |
| Framer Motion | React apps | ~30kb | Medium |
| Motion One | Lightweight web | ~3kb | Low |
| Lottie | Pre-designed playback | ~50kb | Low |
| Rive | Interactive/stateful | ~150kb | Medium |
| Remotion | Video rendering | N/A | Medium |
Selection Decision Tree
Is it a simple hover/transition?
→ CSS
Is it a pre-designed animation from After Effects?
→ Lottie
Does it need complex state logic?
→ Rive
Is it a complex sequence with precise timing?
→ GSAP
Is it a React app with declarative needs?
→ Framer Motion
Do you need smallest bundle size?
→ Motion One or CSS
Are you rendering video?
→ Remotion
Implementation Examples
CSS (Simple Transitions)
.button {
transition:
transform 200ms cubic-bezier(0.2, 0, 0, 1),
opacity 200ms cubic-bezier(0.2, 0, 0, 1);
}
.button:hover {
transform: scale(1.05);
}
GSAP (Complex Sequences)
import gsap from 'gsap';
const tl = gsap.timeline();
tl.from('.title', { opacity: 0, y: 20, duration: 0.3, ease: 'power2.out' })
.from('.subtitle', { opacity: 0, y: 20, duration: 0.3, ease: 'power2.out' }, '-=0.1')
.from('.cta', { opacity: 0, scale: 0.9, duration: 0.3, ease: 'back.out(1.7)' }, '-=0.1');
Framer Motion (React)
import { motion, AnimatePresence } from 'framer-motion';
<AnimatePresence>
{isVisible && (
<motion.div
initial={{ opacity: 0, y: 20 }}
animate={{ opacity: 1, y: 0 }}
exit={{ opacity: 0, y: -20 }}
transition={{ duration: 0.25, ease: [0.05, 0.7, 0.1, 1] }}
/>
)}
</AnimatePresence>
Motion One (Lightweight)
import { animate } from 'motion';
animate('.element',
{ opacity: [0, 1], y: [20, 0] },
{ duration: 0.25, easing: [0.05, 0.7, 0.1, 1] }
);
See references/gsap.md for GSAP deep dive.
See references/framer-motion.md for Framer Motion patterns.
See references/rive.md for Rive state machines.