- بواسطة x32x01 ||
أزاى تضيف Animations لموقعك في React باستخدام Framer Motion ✨
بص يا سيدي 😎، لو شغال على مشروع React ومحتاج تضيف شوية حركات حلوة و[Animations] تخلي الـ[UI] بتاعك حي واحترافي، أفضل حاجة أرشحها ليك هي مكتبة Framer Motion، مكتبة بسيطة وسهلة وفي نفس الوقت قوية جدا في التحكم في الحركات بطريقة مش معقدة زي [CSS] أو [JavaScript] 💪.ايه هي Framer Motion؟ 🤔
Framer Motion بتخليك تضيف [Animations] للعناصر بتاعتك بشكل سهل، ومبنية مخصوص لـ React، فهتلاقيها شغالة بنفس فكرة الـ [Components] اللي انت متعود عليها، يعني أي عنصر ممكن يتحرك ويتفاعل بسهولة بدون كود معقد.1️⃣ أول خطوة: تثبيت المكتبة
زي أي مكتبة [React]، هتفتح الـ[Terminal] وتكتب الأمر ده: Code:
npm install framer-motion 2️⃣ مثال بسيط: 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>
);
}; 3️⃣ حركات معقدة: Transitions 🎢
ممكن تحرك العنصر من مكان لمكان أو تغير حجمه باستخدام Spring: JavaScript:
<motion.div
initial={{ x: -100 }}
animate={{ x: 0 }}
transition={{ type: "spring", stiffness: 100 }}
>
<h1>اتحركنا بنجاح!</h1>
</motion.div> 4️⃣ التفاعلات: Gestures 🎮
ممكن تضيف تفاعلات زي تكبير العنصر لما تعدي عليه بالماوس: JavaScript:
<motion.button
whileHover={{ scale: 1.2 }}
>
اضغطني يا معلم
</motion.button> 5️⃣ Keyframes 🔑
زي ما بنعمل في [CSS]، ممكن تستخدم [Keyframes] لحركات معقدة: JavaScript:
<motion.div
animate={{ x: [0, 50, 100, 50, 0], opacity: [1, 0.5, 1] }}
transition={{ duration: 2 }}
>
أي حاجة هنا
</motion.div> 6️⃣ 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، وأي تفاعلات بسرعة وسلاسة.
التعديل الأخير: