0Pricing
React Academy · درس

انتقالات CSS مع تغيّرات حالة React

شغّلوا انتقالات CSS بتبديل أسماء الأصناف باستخدام حالة React، بما يشمل انتقالات الشفافية والتحويل واللون.

انتقالات CSS مع تغيّرات حالة React درس مجاني في React Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في React Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة React Academy 4 دروس في المجموع.

ما هو انتقال CSS

يُجري انتقال CSS transition استيفاءً سلساً لخاصية بين قيمتين خلال مدة زمنية، بدلاً من الانتقال الفوري. وتعلنه على العنصر باستخدام transition: property duration timing-function delay.

في React، لا تقوم عادةً بتحريك القيم المضمّنة يدوياً. بدلاً من ذلك، تبدّل فئة أو نمطاً باستخدام الحالة، وتتولى CSS إنشاء الإطارات الوسيطة نيابةً عنك.

تشغيل الانتقال عبر تبديل فئة

يتمثل النمط الشائع في الاحتفاظ بقيمة منطقية داخل useState وتبديل فئة CSS عند تغيّرها. فعندما تتغير الفئة، تحصل الخاصية المستهدفة على قيمة جديدة، وتحرك CSS الفرق بين القيمتين.

على سبيل المثال، تتحكم isOpen في امتلاك العنصر للفئة open، وتعيّن الفئة open ارتفاعاً أو تحويلاً مختلفاً.

حالة isVisible المنطقية

يكون الإعداد المعتاد هو const [isVisible, setIsVisible] = useState(false). ويستدعي زر ما setIsVisible(v => !v) لقلب قيمتها.

يمنع استخدام المُحدّث الوظيفي v => !v الاعتماد على حالة قديمة عند تكدّس عدة تحديثات معاً، مما يحافظ على موثوقية التبديل.

الفئة الشرطية باستخدام القوالب النصية

تنشئ className ديناميكياً: className={'panel ' + (isVisible ? 'panel--shown' : 'panel--hidden')}. وتحتوي الفئة الأساسية على تعريف الانتقال، بينما تحتوي فئات التعديل على قيمتي البداية والنهاية.

يضمن إبقاء transition في الفئة الأساسية الموجودة دائماً عمل الحركة في الاتجاهين، عند الفتح والإغلاق.

تحريك transform وopacity معاً

يمكنك تحريك عدة خصائص في الوقت نفسه من خلال إدراجها: transition: transform 300ms ease, opacity 300ms ease. ويجمع تأثير التلاشي والانزلاق بين تغيير في opacity وتغيير translateY ضمن transform.

يؤدي تحريكهما معاً إلى ظهور متقن، إذ ينزلق العنصر إلى أعلى أثناء تلاشي ظهوره.

إنشاء تتابع متدرج باستخدام transition-delay

يؤخر transition-delay بدء الانتقال. ومن خلال منح عناصر القائمة تأخيرات متزايدة، تنشئ تتابعاً متدرجاً يتحرك فيه كل عنصر بعد العنصر السابق بقليل.

في React، يمكنك حساب التأخير داخل السمة، مثلاً باستخدام style={{ transitionDelay: index * 50 + 'ms' }}.

لماذا لا يمكن إجراء انتقال على display

لا يمكن تحريك الخاصية display لأنها لا تملك قيماً وسيطة بين none وblock. ويؤدي إجراء انتقال عليها إلى قفزة فورية، لا إلى تلاشي.

بدلاً من ذلك، حرّك opacity لإنشاء التلاشي المرئي، وبدّل pointer-events: none حتى يتجاهل العنصر المخفي النقرات أثناء عدم ظهوره.

دوال التوقيت

تحدد دالة التوقيت كيفية تغيّر السرعة خلال مدة الحركة. تتحرك linear بسرعة ثابتة، وتبدأ ease وتنتهي ببطء، بينما تتيح لك cubic-bezier(...) تعريف منحنى مخصص بالكامل.

تُعد المنحنيات المخصصة مناسبة جداً لإضفاء إحساس سريع الاستجابة أو نابض، مثل cubic-bezier(0.34, 1.56, 0.64, 1) لإنشاء تجاوز بسيط.

متغيرات CSS للمدة

يمكنك تخزين المدد في خصائص CSS مخصصة مثل --speed: 300ms وإعادة استخدامها: transition: opacity var(--speed) ease. ويحافظ ذلك على اتساق التوقيت بين المكوّنات.

يمكن لـ React أيضاً تعيين المتغير داخل السمة باستخدام style={{ '--speed': '500ms' }}، مما يتيح للخصائص التحكم في توقيت الحركة.

فضّل transform وopacity لتحسين الأداء

يمكن للمتصفحات تحريك transform وopacity على مركّب GPU دون إعادة حساب التخطيط أو إعادة الرسم. أما تحريك خصائص مثل width أو top أو margin فيفرض أعمال تخطيط في كل إطار، وقد يؤدي إلى تقطّع الحركة.

عندما تحتاج إلى التحريك أو تغيير الحجم أو التدوير، استخدم transform؛ وعندما تحتاج إلى التلاشي، استخدم opacity.

جمع العناصر معاً

يجمع الانتقال الموثوق في React بين حالة منطقية، وفئة تعديل شرطية، وفئة أساسية تعلن transition على خصائص ملائمة لوحدة معالجة الرسوميات. تقلب الحالة الفئة، وتتولى CSS تنفيذ الحركة.

يحافظ ذلك على مكوّناتك بصيغة تصريحية، مع الاستفادة من المتصفح لإنتاج حركة سلسة.

اختبار سريع

اختبر مدى فهمك للتحريك عالي الأداء.

مراجعة

تعلمت تشغيل انتقالات CSS عبر تبديل الفئات التي تقودها الحالة، وتحريك transform وopacity معاً، وإنشاء تتابع متدرج باستخدام التأخيرات، وتجنب إجراء انتقال على display باستخدام opacity مع pointer-events.

كما تعرّفت إلى دوال التوقيت، والمدد المعتمدة على متغيرات CSS، وسبب حفاظ الخصائص التي يركّبها GPU على سلاسة الحركة.

الأسئلة الشائعة

هل درس «انتقالات CSS مع تغيّرات حالة React» مجاني؟

نعم — نص درس «انتقالات CSS مع تغيّرات حالة React» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة React Academy، انتقل إلى CoddyKit PRO. تتضمن دورة React Academy 4 دروس في المجموع.

ماذا ستتعلم في «انتقالات CSS مع تغيّرات حالة React»؟

شغّلوا انتقالات CSS بتبديل أسماء الأصناف باستخدام حالة React، بما يشمل انتقالات الشفافية والتحويل واللون. تتمرن على React Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ React Academy؟

لا تُشترط خبرة سابقة. React Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «انتقالات CSS مع تغيّرات حالة React»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس React Academy هذا؟

نعم. كل درس في React Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. انتقالات CSS مع تغيّرات حالة React
  2. رسوم CSS المتحركة بإطاراتها المفتاحية مع React
  3. استخدام useLayoutEffect للقياسات قبل التحريك
  4. تحريكات الدخول والخروج دون مكتبة
← العودة إلى React Academy