
- بواسطة x32x01 ||
أزاى تضيف Animations لموقعك في React باستخدام Framer Motion
بص يا سيدي 

ايه هي Framer Motion؟
Framer Motion بتخليك تضيف [Animations] للعناصر بتاعتك بشكل سهل، ومبنية مخصوص لـ React، فهتلاقيها شغالة بنفس فكرة الـ [Components] اللي انت متعود عليها، يعني أي عنصر ممكن يتحرك ويتفاعل بسهولة بدون كود معقد.
أول خطوة: تثبيت المكتبة
زي أي مكتبة [React]، هتفتح الـ[Terminal] وتكتب الأمر ده: Code:
npm install framer-motion
مثال بسيط: Fade In عند فتح الصفحة
هنعمل عنصر يعمل Fade In لما الصفحة تفتح باستخدام [motion.div]: JavaScript:
import { motion } from "framer-motion";
const MyComponent = () => {
return (
<motion.div
initial={{ opacity: 0 }}
animate={{ opacity: 1 }}
transition={{ duration: 1 }}
> <h1>نور النور</h1>
</motion.div>
);
};
حركات معقدة: Transitions
ممكن تحرك العنصر من مكان لمكان أو تغير حجمه باستخدام Spring: JavaScript:
<motion.div
initial={{ x: -100 }}
animate={{ x: 0 }}
transition={{ type: "spring", stiffness: 100 }}
>
<h1>اتحركنا بنجاح!</h1>
</motion.div>
التفاعلات: Gestures
ممكن تضيف تفاعلات زي تكبير العنصر لما تعدي عليه بالماوس: JavaScript:
<motion.button
whileHover={{ scale: 1.2 }}
>
اضغطني يا معلم
</motion.button>
Keyframes
زي ما بنعمل في [CSS]، ممكن تستخدم [Keyframes] لحركات معقدة: JavaScript:
<motion.div
animate={{ x: [0, 50, 100, 50, 0], opacity: [1, 0.5, 1] }}
transition={{ duration: 2 }}
>
أي حاجة هنا
</motion.div>
Variants: تحكم منظم في الحركات
لو عندك أكتر من عنصر وعايز كل واحد يتحرك بطريقة مختلفة: JavaScript:
const variants = {
hidden: { opacity: 0, x: -100 },
visible: { opacity: 1, x: 0 },
};
<motion.div
variants={variants}
initial="hidden"
animate="visible"
transition={{ duration: 1 }}
>
هنا بقى وووو
</motion.div>
ليه تستخدم Framer Motion؟
- API بسيط لكل أنواع الحركات زي fade و keyframes.
- المكتبة خفيفة وسريعة ومبنية متوافقة تماماً مع [React] عشان الأداء مش يتأثر.
- سهولة إضافة hover effects، drag، tap، وأي تفاعلات بسرعة وسلاسة.
التعديل الأخير: