🎬 مميز

Framer Motion

مكتبة رسوم متحركة لـ React (React Animation Library)

(5/5)
👁️ 5 مشاهدة
📅 02 Jul 2026
⚛️ React

مستوى الخبرة المطلوب:

🌱 مبتدئ ⚡ متوسط 🚀 محترف 🏢 مؤسسي
🔗 زيارة الموقع الرسمي
5
تقييم المستخدمين
التصنيف 🎬 Animation
المشاهدات 5
تاريخ الإضافة 02/07/2026
آخر تحديث 02/07/2026

📖 الوصف

Framer Motion هي مكتبة رسوم متحركة مصممة خصيصاً لـ React. توفر API بسيطة وقوية لإنشاء animations وtransitions مع declarative syntax. من تطوير Framer (أداة تصميم). Framer Motion 11 أحدث إصدار يوفر performance محسّن، Layout animations، وgestures مدمج. تُعتبر الخيار الأول لـ React animations.

🎯 يستخدم في

مجالات استخدام هذه الأداة

React applications

Page transitions

Gestures (drag

tap

hover)

Layout animations

Exit animations

المميزات

أبرز مميزات هذه الأداة

React-native API

declarative syntax

Layout animations

Gestures مدمج (drag

tap

hover)

Exit animations

Variants للـ complex animations

Performance محسّن

TypeScript support

⚠️ العيوب

نقاط يجب مراعاتها

×

مخصص لـ React فقط

×

Bundle size متوسط

×

Learning curve للميزات المتقدمة

×

أقل مرونة من GSAP

🔄 البدائل

أدوات بديلة يمكنك استخدامها

GSAP
React Transition Group
Motion One

💻 مثال على الاستخدام

كيفية استخدام هذه الأداة

Example Code
import { motion, AnimatePresence } from 'framer-motion';

// Basic animation
function Box() {
  return (
    <motion.div
      initial={{ opacity: 0, y: 20 }}
      animate={{ opacity: 1, y: 0 }}
      exit={{ opacity: 0, y: -20 }}
      transition={{ duration: 0.3 }}
    >
      محتوى
    </motion.div>
  );
}

// Gestures
function Draggable() {
  return (
    <motion.div
      drag
      dragConstraints={{ left: -100, right: 100 }}
      whileDrag={{ scale: 1.1 }}
      whileTap={{ scale: 0.95 }}
    >
      اسحبني
    </motion.div>
  );
}

// Variants
const container = {
  hidden: { opacity: 0 },
  show: {
    opacity: 1,
    transition: { staggerChildren: 0.1 }
  }
};

const item = {
  hidden: { opacity: 0, y: 20 },
  show: { opacity: 1, y: 0 }
};

function List() {
  return (
    <motion.ul variants={container} initial="hidden" animate="show">
      {items.map(item => (
        <motion.li key={item.id} variants={item}>
          {item.text}
        </motion.li>
      ))}
    </motion.ul>
  );
}

// Exit animations
function Modal({ isOpen }) {
  return (
    <AnimatePresence>
      {isOpen && (
        <motion.div
          initial={{ opacity: 0 }}
          animate={{ opacity: 1 }}
          exit={{ opacity: 0 }}
        >
          محتوى النموذج
        </motion.div>
      )}
    </AnimatePresence>
  );
}

// Layout animations
function Layout() {
  const [isOpen, setIsOpen] = useState(false);
  
  return (
    <motion.layout
      layout
      onClick={() => setIsOpen(!isOpen)}
    >
      {isOpen ? 'مفصل' : 'ملخص'}
    </motion.layout>
  );
}

📚 أدوات أخرى في Animation

قد يعجبك أيضاً