Menu
flag Ar iconالعربيةdown icon

محدد الفئة class ومحدد المعرّف id في CSS

محدد الفئة (.name) ينسق كل عنصر يحمل تلك الفئة، ومحدد المعرّف (#name) ينسق العنصر الوحيد الذي يحمل ذلك الـ id. تعلّم الصيغة، والفئات المتعددة والمتسلسلة، والفرق بين class وid، وقواعد التسمية، وتبديل الفئات بـ JavaScript.

تحتوي هذه الصفحة على محررات قابلة للتشغيل - حرّر، شغّل، وشاهد النتيجة فوراً.

محدد الفئة

محدد الفئة نقطة يليها اسم الفئة. ينسق كل عنصر تحتوي سمته class على ذلك الاسم، مهما كان نوع العنصر.

النقطة تظهر في CSS فقط. في HTML تكون السمة class="badge" من دون نقطة. أسماء الفئات حساسة لحالة الأحرف: .Badge لا يطابق class="badge".

عدة فئات على عنصر واحد

يمكن للعنصر أن يحمل أي عدد من الفئات، مفصولة بمسافات. كل فئة تجلب قواعدها الخاصة، وهكذا تبني أشكالًا مختلفة من قطع صغيرة:

.btn.danger، من دون مسافة، يطابق العناصر التي تحمل الفئتين معًا. عنصر span الأخير يحمل danger لكن لا يحمل btn، لذلك تتخطاه القاعدة المتسلسلة.

أشكال محدد الفئة

المحددما يطابقه
.noteأي عنصر يحمل الفئة note
p.noteعناصر <p> فقط التي تحمل الفئة note
.btn.primaryالعناصر التي تحمل btn وprimary معًا
.card .titleعنصر .title في أي مكان داخل .card
.card > .titleعنصر .title أبوه .card
.a, .bالعناصر التي تحمل a أو b

الفرق بين وجود المسافة وغيابها مشروح مع مُركِّبات أخرى في صفحة المحددات في CSS.

محدد المعرّف

محدد المعرّف علامة # يليها الـ id: #site-header ينسق العنصر الذي يحمل id="site-header". يجب أن يكون الـ id فريدًا في الصفحة، لذلك يستهدف محدد المعرّف عنصرًا واحدًا بالضبط.

المعرّفات تفعل أكثر من التنسيق: href="#details" ينقل الصفحة إلى العنصر، و<label for="email"> يشير إلى id حقل الإدخال، وJavaScript يجده عبر document.getElementById('details'). هذا هو السبب المعتاد لإعطاء عنصر id؛ أما للتنسيق فالفئة هي الأداة الأفضل.

الفرق بين class وid

الفئة .nameالمعرّف #name
في الصفحةعناصر كثيرةعنصر واحد
لكل عنصرعدة فئات مفصولة بمسافاتواحد
الخصوصية(0,1,0)(1,0,0)
هدف رابط (#name في العنوان)لانعم
الأنسب لـالتنسيقالمراسي، والتسميات، ونقاط ربط JavaScript

فجوة الخصوصية هي السبب العملي للتنسيق بالفئات. معرّف واحد يتغلب على أي عدد من الفئات، لذلك لا يمكن تجاوز قاعدة مكتوبة بمعرّف إلا بمعرّف آخر أو بنمط مضمّن أو بـ !important:

إضافة الفئات وإزالتها بـ JavaScript

الفئات هي الطريقة المعتادة كي يغيّر JavaScript مظهر شيء ما: CSS تعرّف الحالات، والسكربت يبدّل بينها فقط.

يوفر classList أيضًا add وremove وcontains وreplace. تجنب إسناد قيمة إلى className مباشرة: فهي تستبدل كل الفئات التي كان يحملها العنصر.

تسمية الفئات

  • الحروف والأرقام والشرطات والشرطات السفلية آمنة: card، card-title، card__title، is-open.
  • لا تبدأ المحدد برقم أو بشرطة يليها رقم. .2col غير صالح في CSS. ابدأ بحرف (.cols-2) أو هرّب الرقم (.\32 col).
  • سمِّ حسب الغرض لا حسب الشكل: .error تصمد أمام إعادة التصميم، و.red-text لا تصمد.
  • اتفاقية تسمية تساعد في المشاريع الأكبر. تكتب BEM الشكل block__element--modifier، مثلًا .card__title--large.

أخطاء شائعة

  • وضع النقطة في HTML. class=".badge" لا يطابق .badge أبدًا.
  • سمتا class. <p class="a" class="b"> يحتفظ بـ a فقط. استخدم class="a b".
  • مسافة حين تقصد الفئتين معًا. .btn .primary يبحث عن عنصر متداخل؛ أما .btn.primary فهو العنصر نفسه.
  • تكرار id. المعرّفات المكررة تُفسد getElementById وروابط المراسي وربط التسميات، حتى لو بدت CSS تعمل.
  • تنسيق كل شيء بالمعرّفات. خصوصيتها تجعل التجاوزات اللاحقة مرهقة؛ استخدم الفئات.

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

كيف أختار فئة class في CSS؟

اكتب نقطة يليها اسم الفئة: .card { ... } ينسق كل عنصر يحمل class="card". النقطة موجودة في CSS فقط؛ سمة HTML لا تحتوي على نقطة.

ما الفرق بين class وid في CSS؟

يمكن استخدام الفئة على أي عدد من العناصر، ويمكن للعنصر أن يحمل عدة فئات؛ أما الـ id فيجب أن يكون فريدًا في الصفحة، وللعنصر id واحد على الأكثر. في CSS خصوصية #id أعلى بكثير من .class، لذلك يصعب تجاوز قواعد المعرّف.

كيف أعطي عنصرًا فئتين؟

افصل بين الاسمين بمسافة داخل سمة واحدة: class="btn primary". كتابة class مرتين على العنصر لا تعمل؛ يحتفظ المتصفح بالسمة الأولى فقط.

كيف أختار عنصرًا يحمل فئتين؟

اربط محددي الفئتين من دون مسافة: .btn.primary يطابق العناصر التي تحمل الفئتين معًا. ومع المسافة، .btn .primary تعني عنصر .primary داخل عنصر .btn.

هل يمكن أن يبدأ اسم الفئة في CSS برقم؟

في HTML نعم، لكن المحدد لا يمكن أن يبدأ برقم غير مُهرَّب، فـ .1col غير صالح في CSS. هرّب الرقم (.\31 col) أو، وهو الأفضل، ابدأ أسماء الفئات بحرف.

Coddy programming languages illustration

تعلّم البرمجة مع Coddy

ابدأ الآن