class و id في HTML: تسمية العناصر
في صفحتك عشر فقرات، وتريد أن تلوّن ثلاثاً منها فقط. كيف تخبر CSS أي الفقرات تقصد؟ الحل أن تعطي العناصر أسماء. في HTML خاصيتان لهذا الغرض: class و id. ستستخدمهما في كل صفحة تكتبها، لأنهما الجسر بين HTML من جهة، و CSS و JavaScript من جهة أخرى.
الخاصية class
Section titled “الخاصية class”class تضع العنصر في مجموعة لها اسم. ويمكن أن يحمل الاسم نفسه أي عدد من العناصر:
<p class="note">تذكّر حفظ الملف قبل الإغلاق.</p><p>هذه فقرة عادية.</p><p class="note">راجع الدرس السابق أولاً.</p>ثم تكتب التنسيق مرة واحدة لكل من يحمل هذا الاسم. في CSS نشير إلى الكلاس بـ نقطة قبل اسمه:
<style> .note { background: #fef3c7; padding: 8px; }</style>الفقرتان الأولى والثالثة ستأخذان الخلفية الصفراء، والثانية تبقى كما هي.
تخيّل الزي المدرسي: كل طلاب الصف الأول يلبسون اللون نفسه، فتعرف صفهم من النظرة الأولى. الكلاس هو هذا الزي: علامة مشتركة بين عناصر كثيرة.
أكثر من كلاس للعنصر
Section titled “أكثر من كلاس للعنصر”العنصر الواحد يمكن أن ينتمي إلى عدة مجموعات. اكتب الأسماء في الخاصية نفسها وافصل بينها بمسافة:
<button class="btn">إلغاء</button><button class="btn primary">حفظ</button><button class="btn primary large">اشترك الآن</button>كل الأزرار تأخذ تنسيق btn الأساسي، وبعضها يضيف فوقه primary أو large. بهذه الطريقة تبني تنسيقات صغيرة وتركّب منها ما تشاء.
الخاصية id
Section titled “الخاصية id”id تعطي العنصر اسماً فريداً: لا يتكرر في الصفحة كلها.
<h1 id="page-title">دليل المبتدئين</h1><section id="contact">...</section>في CSS نشير إلى الـ id بعلامة # قبل اسمه:
<style> #page-title { color: darkblue; }</style>إذا كان الكلاس زياً مدرسياً، فالـ id هو الرقم القومي: لكل شخص رقم واحد لا يشاركه فيه أحد.
أين تحتاج id؟
Section titled “أين تحتاج id؟”استخدمت الـ id في دروس سابقة دون أن ننبهك إلى اسمه:
- القفز داخل الصفحة: الرابط
<a href="#contact">ينقلك إلى العنصر الذي يحملid="contact". - ربط label بالحقل:
<label for="email">يرتبط بالحقل الذي يحملid="email". - الوصول من JavaScript: لاختيار عنصر بعينه وتغييره.
<a href="#faq">اذهب إلى الأسئلة الشائعة</a>
<h2 id="faq">الأسئلة الشائعة</h2>class أم id؟
Section titled “class أم id؟”class |
id |
|
|---|---|---|
| التكرار في الصفحة | مسموح | ممنوع، الاسم فريد |
| عدد الأسماء للعنصر | عدة أسماء | اسم واحد |
| الرمز في CSS | نقطة .name |
علامة #name |
| الاستخدام الأساسي | التنسيق | الروابط الداخلية و label و JavaScript |
والقاعدة العملية التي يتبعها أغلب المطورين: للتنسيق استخدم class دائماً، واترك id للحالات الثلاث السابقة.
قواعد اختيار الأسماء
Section titled “قواعد اختيار الأسماء”- بلا مسافات. المسافة في
classتفصل بين كلاسين، وفيidخطأ. - بحروف إنجليزية، ولا يبدأ الاسم برقم.
- إذا كان الاسم من كلمتين فافصل بينهما بشرطة:
main-menuوproduct-card. - الأسماء حساسة لحالة الحروف:
Noteوnoteاسمان مختلفان. - سمِّ العنصر بحسب وظيفته لا شكله:
warningأفضل منred-text، لأنك قد تغيّر اللون غداً ويبقى الاسم صحيحاً.
خصائص عامة أخرى
Section titled “خصائص عامة أخرى”class و id من الخصائص العامة (Global Attributes)، أي أنها تعمل مع كل الوسوم. ومنها أيضاً lang و dir و title التي عرفتها، وهاتان الخاصيتان:
hidden تخفي العنصر من الصفحة تماماً، وتُكتب بلا قيمة:
<p hidden>هذه الفقرة موجودة في الكود ولا تظهر في الصفحة.</p>data-* تخزّن معلومة خاصة بك داخل العنصر. تختار أنت الاسم الذي يأتي بعد data-:
<li data-price="150" data-category="books">قاموس الجيب</li>هذه المعلومات لا تظهر للزائر، لكن JavaScript تستطيع قراءتها لاحقاً، مثلاً لحساب إجمالي الأسعار.
جرّب بنفسك
Section titled “جرّب بنفسك”غيّر الكلاسات في الكود وشاهد النتيجة: أضف الكلاس done إلى المهمة الثالثة، ثم أعطِ المهمة الأولى الكلاسين task urgent معاً. وجرّب الرابط في الأعلى:
الناتج
أخطاء شائعة
Section titled “أخطاء شائعة”- تكرار الـ id: إذا حمل عنصران الاسم نفسه، فالرابط الداخلي يذهب إلى الأول فقط، و JavaScript تتجاهل الثاني. إذا احتجت الاسم أكثر من مرة فهذا كلاس.
- كتابة النقطة أو # في HTML: الرمزان يُكتبان في CSS فقط. في HTML تكتب
class="note"وليسclass=".note". - الفصل بين الكلاسات بفاصلة:
class="btn, primary"خطأ. الفاصل هو المسافة.
اختبر نفسك
Section titled “اختبر نفسك”سؤال
كم عنصراً في الصفحة يمكن أن يحمل id='menu'؟
قيمة id فريدة في الصفحة كلها. للمجموعات استخدم class.
سؤال
ما معنى class='card featured'؟
المسافة داخل class تفصل بين الأسماء، فالعنصر ينتمي إلى المجموعتين معاً.
الخلاصة
Section titled “الخلاصة”classاسم مجموعة يتكرر على أي عدد من العناصر، ورمزه في CSS النقطة.- العنصر يحمل عدة كلاسات تفصل بينها مسافات.
idاسم فريد لعنصر واحد، ورمزه في CSS علامة#.- استخدم class للتنسيق، و id للروابط الداخلية و
labelو JavaScript. hiddenتخفي العنصر، وdata-*تخزّن معلوماتك الخاصة فيه.