اذهب إلى المحتوى

عبدالباسط ابراهيم

الأعضاء
  • المساهمات

    4891
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    11

كل منشورات العضو عبدالباسط ابراهيم

  1. تتبع دورات أكاديمية حسوب منهج ثابت في الشرح وله الكثير من المميزات في بداية الدورة وعند دراسة الأساسيات لا يتم التعمق في الشرح بشكل كبير كما في دورات أخرى وذلك حتى يتم شرح المفاهيم المتقدمة من خلال التطبيقات فهذه الدورات تقوم على التطبيقات العملية فعند تعلم الأساسيات ربما تواجهك بعض المشكلات مثل التي تواجهك حالياً ولكن يجب عليك متابعة التعلم والتطبيق وراء المدرب وستتضح لك فكرة القيام بمشروع كامل بمفردك وأهمية المفاهيم والمصطلحات التي تم دراستها لذلك لا تقلق من هذا الموضوع فمع التطبيق ستتغلب على هذه المشكلة أيضاً هذه الطريقة لا تجعل تمل من الأساسيات فبدلاً من تركيز الدورة في الشرح النظري يتم شرح الأساسيات التي تجعلك قادر على متابعة الشرح العملي مع المدرب
  2. فهم الأمور الجديدة والتذكر الدائم للأوامر البرمجية قد يكون تحديًا في دراسة علوم الحاسب. هنا بعض النصائح التي قد تساعدك: حاول قراءة المفاهيم الجديدة بعناية وتكرارها عدة مرات. قد يكون من المفيد أيضًا كتابة المفاهيم أو تطبيقها عمليًا في تمارين أو مشاريع صغيرة. عندما تمارس المفاهيم البرمجية، فإن ذلك يساعدك على تحسين تذكر الأوامر وتطبيقها بشكل فعلي.ويجب تطبيق جميع التمارين الموجودة بالدورة فذلك ما يساعدك في إسترجاع وتثبيت المعلومات انضم إلى منتديات أو مجموعات عبر الإنترنت تهتم بمجال البرمجة وعلوم الحاسب. يمكنك طرح الأسئلة ومشاركة التحديات التي تواجهها، وقد يقدم الأعضاء الآخرون توجيهات ونصائح قد تكون مفيدة لك. قم بالإطلاع على الإجابات التالية فهي تشرح نفس المشكلة
  3. حاول الضغط على العلامة التالية كما في الصورة بحيث توقف جميع ال breakpoints مع الضغط على pause script execusion كما بالصورة التالية
  4. يمكنك إغلاق المتصفح وإعادة تشغيله مرة أخرى
  5. إذا كان الهدف هو إنشاء موقع للتسويق بالعمولة والكوبونات بأقل تكلفة، فإن استخدام WordPress مع قالب جاهز وتعديله قد يكون الخيار الأمثل للأسباب التالية: ووردبريس أسهل في الاستخدام مقارنة بدروبال، وهناك المزيد من المطورين المتخصصين فيه. توفر ووردبريس آلاف الإضافات والقوالب الجاهزة التي يمكن تعديلها بسهولة. تكلفة تطوير ووردبريس أقل مقارنة بدروبال لبساطة النظام وسهولة تعديله. ووردبريس أكثر انتشاراً لمواقع المحتوى، بينما دروبال مناسب أكثر للمشاريع الأكبر. التحديث والصيانة أسهل في ووردبريس. لكن في النهاية يعتمد القرار على متطلبات المشروع بالتحديد، وخبرة فريق التطوير المتاح. قد يكون دروبال خياراً أفضل لمشاريع أكثر تعقيداً.
  6. الخصائص المذكورة هي خصائص مخصصة يتم تعريفها واستخدامها من قبل الموقع نفسه. قد تختلف الخصائص المدعومة والمفهومة في كل موقع وتطبيق يمكن تقسيم خصائص عناصر HTML إلى قسمين: خصائص قياسية: وهي خصائص معتمدة من قبل المنظمة العالمية لمعايير الإنترنت (W3C).وهي التي تعلمتها في دروس ال html خصائص مخصصة: وهي خصائص غير معتمدة من قبل W3C، ولكنها يمكن استخدامها من قبل مطوري الويب . وتقوم بإنشاءها بنفسك كما في السؤال الخاص بك لاستخدامها مثلاً في javascript بالنسبة لتعلم جميع خصائص عناصر html يمكنك الإطلاع على التوثيقات من خلال موسوعة حسوب مثلاً
  7. يتم إنشاء هذه الأخطاء من إضافات حظر الإعلانات، مثل Adblocker. لاختبار ذلك، استخدم إما متصفحًا مختلفًا أو قم بإلغاء تثبيت المكون الإضافي لحظر الإعلانات Adblocker (انقر بزر الماوس الأيمن فوق الامتداد بجوار شريط URL ثم انقر فوق "إزالة من Chrome...").من المفترض بعد تنفيذ ذلك تختفي هذه الأخطاء أما بالنسبة لما يظهر لديك debugger paused هو بسبب الضغط على pause script execusion من خلال العلامة الموضحة بالصورة لذلك قم بالضغط مرة أخرى عليها
  8. يمكنك الإطلاع على المصادر التالية لتعلم Django REST Framework: التوثيق الرسمي: يحتوي على شرح مفصل وأمثلة لكل مكونات الـ Django REST Framework. سلسلة فيديوهات Dennis Ivy على YouTube: شرح ممتاز بالفيديو لمبادئ وتطبيقات الـ Django REST Framework.
  9. يمكنك الوصول إلى المتغير id الذي تم تمريره في ملف الـ urls.py في الـ class-based view باستخدام طريقة kwargs. في الـ class-based view، يمكنك استخدام طريقة kwargs للحصول على قيمة المتغير id. على سبيل المثال، إذا كان لديك طريقة get() في الـ class-based view، يمكنك الوصول إلى قيمة المتغير id باستخدام الكود التالي: def get(self, request, **kwargs): # access the id variable id = kwargs['id'] # do something with the id variable مثال على ذلك في الـ View: from django.views.generic import ListView class ArticleListView(ListView): def get(self, request, *args, **kwargs): article_id = kwargs['id'] # Now you can use the article_id variable return super().get(request, *args, **kwargs) الخطوات: تستقبل الدالة get كمعامل kwargs والذي يحتوي على جميع المتغيرات الممررة من urls. تستطيع الوصول إلى متغير id عبر kwargs['id']. الآن بإمكانك استخدام متغير article_id داخل الـView.
  10. نعم هناك فرق بينهما حيث أن Django REST Framework (DRF) هو إطار عمل مبني على Django يهدف إلى تسهيل إنشاء وتطوير وثائق واجهة برمجة التطبيقات (API) في Django. يوفر DRF مجموعة من الأدوات والمكونات التي تسهل إنشاء API قوية ومرنة في Django بسهولة. تم بناء Django Rest Framework بالإستعانة ب Django أي يجب تعلم Django أولاً لذلك يمكنك تعلمه لاحقاً بعد إتقان إطار العمل Django وهو الموجود في الدورة التعليمية وليس Django Rest Framework
  11. لا أعلم ما هو المجال الذي تعملين به ولكن هناك عدة خطوات أساسية للنجاح في العمل الحر من المهم تحديد مجال العمل الذي تريد التخصص فيه. هناك العديد من المجالات المختلفة للعمل الحر، مثل البرمجة والتصميم والكتابة والترجمة والتسويق وغيرها. البداية في تطوير مهاراتك في ذلك المجال. حاولي الحصول على خبرة. أفضل طريقة للحصول على خبرة في العمل الحر هي العمل على مشاريع مجانية أو بأجر رمزي. يمكنكي العثور على هذه المشاريع على مواقع العمل الحر أو من خلال التواصل مع الشركات والأفراد. من المهم بناء سمعة جيدة كعامل حر. يمكنكي القيام بذلك من خلال تقديم عمل عالي الجودة وتسليم المشاريع في الوقت المحدد. هناك العديد من الحسابات التي قد تحتاج إلى فتحها لبدء العمل الحر، بما في ذلك: حساب على منصة العمل الحر: هناك العديد من منصات العمل الحر المتاحة، مثل مستقل . حساب على وسائل التواصل الاجتماعي: يمكن أن تساعدك وسائل التواصل الاجتماعي في تسويق نفسك وأعمالك. يمكنك استخدامها لمشاركة أعمالك وأخبارك وبناء علاقات مع الآخرين في مجال العمل الحر. حساب على موقع إلكتروني: يمكن أن يكون موقع الويب الخاص بك بمثابة بوابة إلى أعمالك. يمكنك استخدامه لعرض أعمالك وعرض مهاراتك وتقديم معلومات حول أسعارك وخدماتك. وهناك الكثير من الإجابات على هذا السؤال مسبقاً وبدلاً من تكرارها يمكنكي الإطلاع على الإجابات التالي
  12. هنا بعض المواقع الموصى بها للعثور على تمارين في مجال علوم الحاسوب: يعتبر LeetCode منصة شهيرة توفر تحديات برمجية وتمارين متنوعة في العديد من المواضيع المرتبطة بعلوم الحاسوب، مثل الخوارزميات، وهيكل البيانات، والمسائل البرمجية. توفر HackerRank تحديات برمجية وتمارين لمجموعة واسعة من المواضيع التي تشمل علوم الحاسوب وتطوير البرمجيات. يمكنك الوصول إلى تمارين برمجية ومسابقات لتحسين مهاراتك. توفر CodeSignal تحديات برمجية وتمارين تساعدك على تحسين مهاراتك في البرمجة وحل المشاكل. يتنوع المحتوى من الأسئلة الأساسية إلى الأسئلة المتقدمة. يقدم Project Euler تحديات رياضية وبرمجية تهدف إلى تطبيق مهارات الحلول الإبداعية والبرمجية لحل مشاكل صعبة. توفر Codewars تحديات برمجية تسمح لك بتحسين مهاراتك في البرمجة من خلال حل التحديات والحصول على تقييم من المجتمع.
  13. هنا بعض الخطوات العامة لتنفيذ ما تطلبه: تصميم الصفحة التي بها رابط "المطالبة" يقوم الزائر بالنقر عليه لطلب المكافأة. عند النقر على الزر تتم معالجة الطلب باستخدام سكريبت . يتم إنشاء رابط قصير مع خدمة مثل Bitly أو Shorte.st. يتم توجيه الزائر إلى الرابط القصير مستخدما. على صفحة الرابط القصير يتم تتبع الزائر باستخدام بارامترات الرابط مثل GET. عند النقر على الرابط يتم منح المكافأة مستخدما خدمة مثل FaucetPay أو CoinPot. يمكن أيضا تخزين بيانات الزائر في قاعدة بيانات وتحقق من عدم تكرار الطلب. وكما أخبرك عدنان فيوجد سكريبتات جاهزة يمكنك التعديل عليها
  14. هناك بعض الأسباب المحتملة لهذه المشكلة . تأكد من أنك قمت بتفعيل البيئة الافتراضية بشكل صحيح. يمكنك التحقق من ذلك عن طريق التأكد من وجود اسم البيئة الافتراضية في سطر الأوامر الخاص بك. على سبيل المثال، إذا كنت تستخدم Windows واسم البيئة الافتراضية الخاصة بك هو "myenv"، يجب أن يظهر الأمر `myenv\Scripts>` في سطر الأوامر. إذا لم تكن قد قمت بتفعيل البيئة الافتراضية بعد، يمكنك استخدام الأمر التالي لتفعيلها: source <اسم البيئة الافتراضية>/bin/activate عندما تقوم بتفعيل البيئة الافتراضية، يجب أن يتم استخدام نسخة محددة من Python ومكتبات Python المثبتة داخل البيئة الافتراضية فقط. تأكد من أنك قمت بتثبيت المكتبات التي تريد عرضها باستخدام `pip` داخل البيئة الافتراضية، وليس على مستوى النظام بشكل عام. التحقق من إصدار `pip` المستخدم: قد يكون هناك تعارض بين إصدار `pip` الذي تستخدمه وبين البيئة الافتراضية. بعد تنفيذ هذه الخطوات، يجب أن تتمكن من استخدام `pip freeze` بنجاح لعرض المكتبات المثبتة داخل البيئة الافتراضية.
  15. هناك إحتمالات كثيرة لهذه المشكلة ولكن يمكنك تجربة حذف مجلد ال node-modules ثم إعادة تثبيت الحزم مرة أخرى أولاً قم بحذف المجلد كالتالي rm -rf node_modules ثم بعد ذلك قم بتثبيت الحزم npm install وبالأخير قم بتجربة التطبيق npm install
  16. بداية من الإصدار PHP 8.0 ، تم إضافة المعامل الفارغ الآمن Null Safe Operator لتسهيل التعامل مع القيم الفارغة (null) دون حدوث أخطاء. المعامل الفارغ الآمن `?->` يستخدم للوصول إلى خاصية أو طريقة من خلال سلسلة من الكائنات، وإذا كان أي من الكائنات في السلسلة هو قيمة فارغة (null)، فإن المعامل الفارغ الآمن يعود بقيمة فارغة أيضًا بدلاً من حدوث خطأ. لنفترض أن لدينا الكود التالي كمثال: // تعريف الكائنات class User { public function getName() { return "John Doe"; } } class Address { public function getCity() { return "New York"; } } // إنشاء كائنات $user = new User(); $address = new Address(); إذا أردنا الحصول على اسم المستخدم ومدينته، ولكن قد يكون أحد الكائنات غير موجود (قيمة null)، فيمكننا استخدام المعامل الفارغ الآمن كما يلي: // الحصول على اسم المستخدم $name = $user?->getName(); // "John Doe" // الحصول على مدينة العنوان $city = $address?->getCity(); // "New York" // الحصول على اسم المدينة إذا كانت متاحة أو قيمة فارغة إذا كانت المدينة غير متاحة $cityName = $address?->getCity()?->getName(); // null في المثال الأول، يتم الوصول إلى طريقة `getName()` من خلال الكائن `$user`، ونحصل على قيمة الاسم بشكل صحيح. في المثال الثاني، يتم الوصول إلى طريقة `getCity()` من خلال الكائن `$address`، ونحصل على قيمة المدينة بشكل صحيح. في المثال الثالث، نقوم بالوصول إلى طريقة `getCity()` من خلال الكائن `$address`، ومن ثم نحاول الوصول إلى طريقة `getName()` من خلال القيمة المُعادة من `getCity()`، ولكنها تعود بقيمة فارغة (null)، لذلك يتم إرجاع قيمة فارغة (null) للمتغير `$cityName`. باستخدام المعامل الفارغ الآمن، يمكنك تبسيط التعامل مع القيم الفارغة وتجنب حدوث أخطاء غير مرغوب فيها عند الوصول إلى خصائص أو طرق في سلسلة من الكائنات.
  17. يوجد الكثير من المصادر سواء مجانية أو مدفوعة يمكنك أن تجد الكثير من الكورسات على اليوتيوب قم فقط بالبحث وإختيار الدورة التي تعجبك كما لديك سلسلة من المقالات والدروس حول SQL في أكاديمية حسوب من خلال هذا الرابط كما يوجد عدة دورات على موقع coursera وهي من أفضل الدورات
  18. يمكنك إنشاء حساب على github بكل سهولة من خلال زيارة الموقع كما في الرابط في التعليق السابق والضغط على كلمة Sign up ومتابعة الخطوات التي تظهر لك ويمكنك مشاهدة الفيديو التالي للتوضيح بشكل أكبر وأكثر تفصلاً
  19. هناك بعض المجالات المتقدمة في البرمجة التي تشتمل على مفاهيم رياضية أكثر تعقيدًا. على سبيل المثال، في علوم البيانات والذكاء الاصطناعي، قد تحتاج إلى فهم الاحتمالات والإحصاء والجبر الخطي لتنفيذ بعض الخوارزميات وتحليل البيانات. وفي العمليات الرياضية والمحاكاة، قد تحتاج إلى استخدام المعادلات التفاضلية أو الجبر الخطي المتقدم. لكن في معظم الحالات، يمكن للمطورين تنفيذ معظم المشاريع البرمجية بنجاح دون الحاجة إلى مستوى متقدم في الرياضيات. الأهم هو فهم مفاهيم البرمجة والتمكن من استخدام الأدوات والتقنيات المناسبة لحل المشاكل البرمجية. فمثلاً كمطور ويب، لا تحتاج بشكل عام إلى مستوى متقدم في الرياضيات. عند تطوير مواقع الويب، يتم التركيز على مفاهيم البرمجة وتقنيات الويب بدلاً من المفاهيم الرياضية المتقدمة. ومع ذلك، يمكن أن يكون لبعض المفاهيم الرياضية تطبيقات في مجالات محددة في تطوير الويب. على سبيل المثال، في تصميم وتطوير ألعاب الويب أو تطبيقات الرسومات ثلاثية الأبعاد، قد تحتاج إلى مفاهيم رياضية مثل الهندسة الرياضية والجبر الخطي. لذلك، إذا كنت مبتدئًا في البرمجة وتشعر بالقلق بشأن المستوى المطلوب من المعرفة الرياضية، فلا تقلق. يمكنك البدء بتعلم الأساسيات وتطوير مهاراتك البرمجية بدون الحاجة إلى معرفة رياضية متقدمة. ومع مرور الوقت، يمكنك استكشاف المجالات التي تهمك وتعلم المفاهيم الرياضية اللازمة في حالة الحاجة إليها.
  20. البرمجة هي مجال واسع و يستغرق الوقت والممارسة لفهم جميع المفاهيم والمصطلحات. من الأفضل أن تتعلم الأساسيات ببطء وتركز على فهم المفاهيم الأساسية قبل التحرك إلى الأمور المتقدمة.بحيث المفاهيم التي تحتاج لتوضيح أكثر قم بطرح سؤال أسفل الدرس الخاص بها وسيتم التوضيح بشكل أكبر وكما أخبرك عدنان في التعليق السابق فإن history هو كائن يتم استخدامه للتحكم في تاريخ المتصفح (history)، أي سجل الصفحات التي تمت زيارتها. يوفر العديد من الوظائف مثل push() التي تستخدم لتغيير عنوان URL وتوجيه المستخدم إلى صفحة جديدة. عند استخدام props.history.push('/')، يتم توجيه المستخدم إلى الصفحة الرئيسية ("/"). وبالنسبة للأكواد الأخرى if (!contact.name.includes(this.state.search)) return: هذا الشرط يتحقق إذا كان اسم جهة الاتصال (contact.name) لا يحتوي على النص الموجود في حقل البحث (this.state.search). إذا كان الشرط صحيحًا (الاسم لا يحتوي على النص المطلوب)، فسيتم إيقاف تنفيذ الدالة وعدم عرض جهة الاتصال. let messages = this.props.messages.filter(e => e.sender === contact._id || e.receiver === contact._id); هنا يتم تصفية الرسائل (messages) بناءً على جهة الاتصال المحددة (contact._id). يتم استخدام دالة filter() لاسترجاع الرسائل التي تم إرسالها من قبل جهة الاتصال أو استلامها منه. تُحفظ الرسائل المصفاة في المتغير messages. let lastMessage = messages[messages.length-1]; هذا الكود يستخرج آخر رسالة تمت مراسلتها بين المستخدم وجهة الاتصال المحددة. يتم حفظ الرسالة الأخيرة في المتغير lastMessage بناءً على طول قائمة الرسائل (messages) واستخلاص العنصر الأخير منها (messages.length-1). let unseen = messages.filter(e => !e.seen && e.sender === contact._id).length: هذا الكود يستخرج عدد الرسائل غير المرئية (التي لم يتم رؤيتها) بين المستخدم وجهة الاتصال المحددة. يتم تصفية الرسائل (messages) لاسترداد تلك التي لم يتم رؤيتها (!e.seen)، والتي تمت إرسالها من قبل جهة الاتصال (e.sender === contact._id)، ومن ثم يتم حساب عددها بواسطة .length. يتم حفظ العدد في المتغير unseen.
  21. إعادة فتح برنامج VSCode بعد تثبيت الحزمة التي ترغب في استيرادها قد يحل المشكلة في بعض الأحيان. هذا ينطبق عند استخدامك للبيئة العامة (البيئة الأساسية لـ Python) خارج أي بيئة افتراضية. إذا كنت تستخدم بيئة افتراضية (venv)، يجب على Plycance Language Server اكتشاف الحزم المثبتة تلقائيًا بعد تثبيتها. في هذه الحالة، ليس من الضروري بالضرورة إعادة فتح برنامج VSCode.لذلك إذا كنت تستخدم بيئة افتراضية (venv) يمكنك تجربة الحلول السابقة من الجدير بالذكر أن التأكد من تحديد المفسر الصحيح لـ Python وضبط المسار الصحيح لـ Python في إعدادات برنامج VSCode
  22. بالإضافة للفروقات السابقة حيث تم الشرح بطريقة ممتازة في التعليقات السابقة ولكن من ناحية فرص العمل Symfony و Laravel يعتبران كلاهما شائعين ومطلوبين في سوق العمل. Symfony لديه تاريخ طويل ومجتمع نشط من المطورين والشركات التي تستخدمه. يستخدم Symfony في تطوير تطبيقات ويب متكاملة ومعقدة، ويتميز بقوة ومرونة في إدارة البيانات وتوفير الأدوات المتقدمة للتحكم في المشروع. بالنظر إلى شعبية Symfony وتبنيه من قبل الشركات الكبيرة، يمكن أن يكون لديك فرص عمل جيدة في مجال Symfony. Laravel حقق شعبية متزايدة في السنوات الأخيرة بسبب سهولة التعلم والاستخدام وتجربة التطوير الجذابة التي يقدمها. يستخدم Laravel في تطوير التطبيقات الويب السريعة والمرنة والمبتكرة، ويوفر العديد من الميزات والأدوات التي تسهل عملية التطوير. بالنظر إلى زيادة الطلب على Laravel، فإن فرص العمل في هذا المجال يمكن أن تكون واعدة. يجب ملاحظة أن فرص العمل تعتمد أيضًا على عوامل أخرى مثل موقعك الجغرافي ومستوى خبرتك ومجالات الاهتمام الخاصة بك. قد يكون من المفيد أن تبحث عن فرص العمل المحلية في سوق العمل الذي تهتم به وتقيم الطلب على كل من Symfony و Laravel في ذلك السوق. كما يمكنك أيضًا مراجعة مواقع العمل الشهيرة والمجتمعات المطورة للبحث عن إشارات حول الطلب على هذين الإطارين.
  23. هناك عدة أسباب تجعل جميع الدورات في أكاديمية حسوب مدفوعة: تسعى أكاديمية حسوب إلى تقديم دورات عالية الجودة تلبي احتياجات المتعلمين. يتطلب هذا استثمارًا في الموارد، مثل المدربين ذوي الخبرة والمحتويات التعليمية عالية الجودة. دعم من المدربين ذوي الخبرة في أي وقت يتم الإجابة عن إستفساراتك. المتابعة في تحديث المحتوى ليواكب التغييرات والتحديثات التي تضاف للمجال المساعدة في الحصول على عمل بعد الحصول على الشهادة و إجتياز الإمتحان في النهاية، يقرر كل متعلم ما إذا كانت الدورات التدريبية في أكاديمية حسوب تستحق التكلفة أم لا. ومع ذلك، تعتقد أكاديمية حسوب أن الدورات التدريبية الخاصة بها تستحق التكلفة لأنها توفر قيمة كبيرة للمتعلمين. ولكن يجب الإشارة أنه يوجد الكثير من الكتب والدروس في العديد من المجالات هنا في أكاديمية حسوب هل دورات حسوب المدفوعة تستحق التسجيل
  24. هناك العديد من محررات Markdown التي تعمل على نظام الويندوز: Typora - محرر Markdown شهير وسهل الاستخدام مع دعم لعرض مباشر للمحتوى. Markdown Monster - محرر قوي مع أدوات كتابة متقدمة. Remarkable - محرر بسيط وسريع مع تركيز على الكتابة. Ghostwriter - محرر Open Source بتصميم بسيط. Markdown Pad - محرر بأدوات تحرير نصوص متقدمة. iA Writer - محرر بتركيز على التركيز وخلوه من التشتيت. هذه بعض الخيارات الجيدة للكتابة بتنسيق Markdown على ويندوز دون الحاجة للمتصفح.
  25. الفرق الجوهري بين pseudo class و pseudo element هو أن pseudo class يستهدف حالة معينة لعنصر، بينما pseudo element يخلق عنصرًا جديدًا داخل عنصر موجود. على سبيل المثال، يمكنك استخدام pseudo class :hover لتغيير لون عنصر عند وضع مؤشر الماوس عليه. يمكنك استخدام pseudo element ::after لإنشاء عنصر جديد بعد عنصر موجود، مثل إضافة نص أو صورة. فيما يلي بعض الأمثلة على كيفية استخدام pseudo class و pseudo element: Pseudo class: a:hover { color: red; } هذا الكود سيغير لون جميع الروابط إلى الأحمر عند وضع مؤشر الماوس عليها. Pseudo element: p::after { content: ""; color: red; position: absolute; top: 0; right: 0; } هذا الكود سيضيف نقطة حمراء بعد كل فقرة. الفوائد: يوفر استخدام pseudo class و pseudo element مزيدًا من المرونة في تخصيص تنسيق العناصر. على سبيل المثال، يمكنك استخدام pseudo class لتغيير تنسيق عنصر بناءً على حالة معينة، مثل تركيز المستخدم أو عنصر التوجيه. يمكنك استخدام pseudo element لإنشاء عناصر جديدة داخل عناصر موجودة، مثل إضافة عناصر التنقل أو الإعلانات.
×
×
  • أضف...