I'm always excited to take on new projects and collaborate with innovative minds.

Phone

+20 115 052 9992

Website

https://ibrahimahmed.online/

Social Links

إزاي تعمل أنيميشن احترافي في Vue.js وتخلي موقعك في حتة تانية

إزاي تعمل أنيميشن احترافي في Vue.js وتخلي موقعك في حتة تانية بص يا سيدي، كلنا كـ مبرمجين (Developers) بنحب الكود يكون نضيف والـ Performance عالي، بس في لحظة معي

إزاي تعمل أنيميشن احترافي في Vue.js وتخلي موقعك في حتة تانية
Reading Count: 3

إزاي تعمل أنيميشن احترافي في Vue.js وتخلي موقعك في حتة تانية

بص يا سيدي، كلنا كـ مبرمجين (Developers) بنحب الكود يكون نضيف والـ Performance عالي، بس في لحظة معينة العميل أو الـ Designer بتاعك بيطلب منك "حركة" بسيطة للعناصر عشان الموقع ميبانش جامد أو ممل. المشكلة إننا بنخاف من تعقيد الـ Animations وبنفتكر إننا محتاجين مكتبات خارجية تقيلة، بس الحقيقة إن Vue.js موفر لنا أدوات عبقرية ومن غير أي تعقيد.

في المقال ده، هنشرح إزاي تستخدم Transition و TransitionGroup عشان تضيف تأثيرات بصرية جذابة (Visual Effects) تخلي تجربة المستخدم (User Experience) في موقعك احترافية جداً.

ليه تستخدم النظام المدمج في Vue بدل الـ CSS العادي؟

في العادي، عشان تعمل أنيميشن بتضطر تغير الـ Class بتاع الـ CSS وتتعامل مع الـ Events، وده بيخلي الكود بتاعك (Codebase) مكركب. لكن في Vue، الـ Transition Component بيقوم بالواجب ده بالنيابة عنك، بيكتشف العنصر لما يدخل أو يخرج من الـ DOM وبيضيف الـ Classes المطلوبة أوتوماتيك.

الخطوة الأولى: فهم آلية عمل الـ Transition

عشان تعمل أنيميشن لعنصر واحد، Vue بيحتاج منك تحيط العنصر بـ transition tag. بمجرد ما العنصر ده بيظهر أو يختفي (عن طريق v-if أو v-show)، Vue بيضيف 6 Classes في مراحل مختلفة من الحركة.

مثال سريع:


<transition name="fade">
  <p v-if="show">أهلاً بيك يا بطل!</p>
</transition>

وعشان تخليها تتحرك، بتضيف الـ CSS ده:


.fade-enter-active, .fade-leave-active {
  transition: opacity 0.5s ease;
}
.fade-enter-from, .fade-leave-to {
  opacity: 0;
}

التعامل مع القوائم باستخدام TransitionGroup

لو عندك قائمة (List) فيها عناصر كتير وعايز لما عنصر يتمسح الباقي يتسحبوا مكانه بنعومة، هنا بيجي دور TransitionGroup. الفرق الجوهري هنا إن TransitionGroup بيعمل Render لعنصر حقيقي في الـ DOM (زي div مثلاً) ولازم تدي كل عنصر جواها key فريد عشان Vue يعرف يتابع حركتهم.

مثال عملي:


<transition-group name="list" tag="ul">
  <li v-for="item in items" :key="item.id">
    {{ item.text }}
  </li>
</transition-group>

لاحظ إن الـ list-move Class هو اللي بيخلي العناصر "تتزحلق" وهي بتغير أماكنها، ودي حركة بتبهر أي حد بيشوف الموقع!

نصائح "من قلب المطبخ" عشان الأنيميشن ما يبوظش الأداء

  • التبسيط: ما تبالغش في الـ Animations. حركة بسيطة أحسن بكتير من زحمة وتشتيت للمستخدم.
  • الأداء (Performance): دايماً استخدم الخواص اللي الـ GPU بيعرف يتعامل معاها زي transform و opacity وابعد عن width أو height لأنها بتخلي المتصفح يعمل إعادة رسم (Reflow) وده بيبطئ الموقع.
  • استخدام مكتبات مساعدة: لو محتاج حاجات معقدة جداً، أنصحك تبص على GSAP، هي الـ Standard حالياً في الأنيميشن المتطور، وممكن تدمجها مع الـ Transition Hooks في Vue بسهولة.

خاتمة: نصيحة من أخ

بص يا هندسة، البرمجة مش بس لوجيك (Logic) وكود، البرمجة فن. الـ Animations هي اللمسة اللي بتفرق بين مبرمج بيعرف يكتب كود وبين مبرمج بيصمم تجربة. ابدأ بتجربة الحاجات البسيطة دي في مشروعك الجاي، وشوف رد فعل المستخدمين، هتلاقي فرق كبير جداً في شكل وجودة الموقع. استمر في التجربة، وماتخافش الكود يضرب، ده جزء من الرحلة!


Share

Related posts

May 06, 2026 • 1 min read
Reading Count: 7
ازاي تبني تطبيقات ويب سريعة ومحسنة لمحركات البحث باستخدام Nuxt 3 و Vue

ازاي تبني تطبيقات ويب سريعة ومحسنة لمحركات البحث باستخدام Nuxt 3 و Vue لو أنت مبرمج Frontend، أكيد و...

May 05, 2026 • 1 min read
Reading Count: 4
دليلك الشامل لبناء تطبيقات احترافية باستخدام Nuxt 3 و Vue

دليلك الشامل لبناء تطبيقات احترافية باستخدام Nuxt 3 و Vue بصفتك مبرمج ويب، أكيد مر عليك الموقف اللي...

May 05, 2026 • 1 min read
Reading Count: 6
دليل التعامل مع دورة حياة المكونات (Lifecycle Hooks) في Vue 3

دليل التعامل مع دورة حياة المكونات (Lifecycle Hooks) في Vue 3 أهلاً بك يا صديقي المبرمج. لو بدأت رحل...