Loading...
Loading...
Loading...
รวม animation presets ที่ใช้บ่อย — fade, slide, dropdown, stagger พร้อมตัวอย่างโค้ดและ live demo
Copy ไฟล์เหล่านี้ไปใช้ในโปรเจกต์ได้เลย
src/lib/framer-motion/framer-motion.ts
src/components/framer-motion/fade.tsx
src/components/framer-motion/stagger.tsx
แต่ละ preset พร้อม live demo — กด replay เพื่อดูซ้ำ
Variant
export const fadeUp: Variants = {
hidden: { opacity: 0, y: 50 },
show: { opacity: 1, y: 0 },
};Usage
<motion.div
variants={fadeUp}
initial="hidden"
animate="show"
transition={{ duration: 0.5, ease: 'easeOut' }}
>
Content
</motion.div>Variant
export const fadeIn: Variants = {
hidden: { opacity: 0 },
show: { opacity: 1 },
};Usage
<motion.div
variants={fadeIn}
initial="hidden"
animate="show"
transition={{ duration: 0.4 }}
>
Content
</motion.div>Variant
export const slideDown: Variants = {
hidden: { opacity: 0, y: -50 },
show: { opacity: 1, y: 0 },
};Usage
<motion.div
variants={slideDown}
initial="hidden"
animate="show"
>
Notification
</motion.div>Variant
export const slideLeft: Variants = {
hidden: { opacity: 0, x: 50 },
show: { opacity: 1, x: 0 },
};Usage
<motion.div
variants={slideLeft}
initial="hidden"
animate="show"
>
Panel
</motion.div>Variant
export const slideRight: Variants = {
hidden: { opacity: 0, x: -50 },
show: { opacity: 1, x: 0 },
};Usage
<motion.div
variants={slideRight}
initial="hidden"
animate="show"
>
Content
</motion.div>Variant
export const dropdown: Variants = {
hidden: { opacity: 0, y: -12 },
show: { opacity: 1, y: 0 },
exit: { opacity: 0, y: -12 },
};Usage
<AnimatePresence>
{isOpen && (
<motion.div
variants={dropdown}
initial="hidden"
animate="show"
exit="exit"
>
Menu Items
</motion.div>
)}
</AnimatePresence>Variant
export const slideInRight: Variants = {
hidden: { x: '100%' },
show: { x: 0 },
exit: { x: '100%' },
};Usage
<AnimatePresence>
{isOpen && (
<motion.nav
variants={slideInRight}
initial="hidden"
animate="show"
exit="exit"
transition={{ type: 'spring', damping: 25 }}
>
Navigation
</motion.nav>
)}
</AnimatePresence>Variant
export const staggerContainer: Variants = {
hidden: {},
show: {
transition: {
staggerChildren: 0.06,
delayChildren: 0.15,
},
},
};
export const staggerItem: Variants = {
hidden: { opacity: 0, x: 20 },
show: { opacity: 1, x: 0 },
};Usage
<motion.ul
variants={staggerContainer}
initial="hidden"
animate="show"
>
{items.map((item) => (
<motion.li key={item.id} variants={staggerItem}>
{item.name}
</motion.li>
))}
</motion.ul>