المحددات
نتعلم كيف نختار العنصر الذي نريد تنسيقه بدقة. ⏱ نحو 25 دقيقة.
- تختار العناصر بالوسم والصنف والمعرّف.
- تجمع المحددات بالفاصلة، وتختار العنصر داخل عنصر.
- تستخدم الحالات مثل :
hover. - تعرف أي المحددات أقوى عند التعارض.
١ثلاثة محددات أساسية
المحدِّد يجيب عن سؤال: أي العناصر نريد تنسيقها؟
<h1 id="title">قائمة بُنّ</h1><p>قهوة عربية <span class="price">8 ريال</span></p><p class="special">قهوة اليوم <span class="price">12 ريال</span></p><p>شاي <span class="price">5 ريال</span></p>
/* 1) بالوسم: كل الفقرات */p { font-size: 18px;} /* 2) بالصنف class: كل عنصر صنفه price */.price { color: #2E8B3A; font-weight: bold;} /* 3) بالمعرّف id: عنصر واحد فقط */#title { color: #E07A1F;}
| المحدِّد | يكتب | يختار | في HTML |
|---|---|---|---|
| الوسم | p | كل عناصر هذا الوسم. | — |
| الصنف | .price | كل عنصر له هذا الصنف. يتكرر في الصفحة. | class="price" |
| المعرّف | #title | عنصرًا واحدًا فقط. لا يتكرر. | id="title" |
انتبه: النقطة . للصنف، وعلامة # للمعرّف، في CSS فقط. أما في HTML فنكتب الاسم بلا علامة.
٢أكثر من صنف، وتجميع المحددات
<button class="btn">إلغاء</button><button class="btn primary">احجز</button><h2>عنوان</h2><h3>عنوان فرعي</h3>
.btn { padding: 8px 16px; border-radius: 8px;}.primary { background: #1D5FB4; color: white;}/* محددات مجمّعة بفاصلة */h2, h3 { color: #3B2A1A;}
- العنصر يحمل أكثر من صنف بمسافة بينها:
class="btn primary"، فيأخذ تنسيق الصنفين. - الفاصلة تطبّق القاعدة نفسها على أكثر من محدِّد:
h2, h3.
٣العنصر داخل العنصر
المسافة بين محدِّدين تعني «داخل». nav a تختار الروابط التي داخل nav فقط:
<nav> <a href="#">الرئيسية</a> <a href="#">القائمة</a></nav><p>اقرأ <a href="#">الشروط</a>.</p>
nav a { background: #3B2A1A; color: white; padding: 4px 10px; text-decoration: none;}
٤حالات العنصر: hover وغيرها
بعد النقطتين نكتب حالة العنصر. أشهرها :hover: حين يمر مؤشر الفأرة فوقه:
<button>مرّر الفأرة فوقي</button><ul> <li>الأول</li> <li>الثاني</li> <li>الثالث</li></ul>
button:hover { background: #E07A1F; color: white;}li:first-child { font-weight: bold;}
| الحالة | متى؟ |
|---|---|
:hover | المؤشر فوق العنصر. |
:focus | العنصر نشط للكتابة (حقل إدخال). |
:first-child | أول عنصر بين إخوته. |
:nth-child(2) | العنصر الثاني. |
٥من الأقوى؟
إذا اختار محددان العنصر نفسه بقيمتين مختلفتين، يفوز الأدق:
<p id="note" class="info">ما لوني؟</p>#note { color: green; }.info { color: blue; }p { color: red; }
الترتيب من الأقوى: المعرّف #id ثم الصنف .class ثم الوسم p. وعند التساوي يفوز المكتوب أخيرًا. لذلك ظهر النص أخضر رغم أن قاعدة p مكتوبة آخرًا.
نصيحة عملية: نسّق بالأصناف في أغلب الأحوال؛ فهي قابلة للتكرار، وقوتها متوسطة فلا تصعّب التعديل لاحقًا.
توقّع وتحقّق
أي محدِّد يختار كل العناصر ذات الصنف card؟
عنصر واحد فريد في الصفحة نختاره بـ:
ماذا يختار المحدِّد footer p؟
عنصر له id و class بلونين مختلفين، أيهما يفوز؟
الخلاصة
pكل الفقرات، و .nameالصنف (يتكرر)، و #nameالمعرّف (فريد).- الفاصلة تجمع محددات، والمسافة تعني «داخل».
- :
hoverحالة مرور الفأرة، و :first-childأول عنصر. - القوة: المعرّف ثم الصنف ثم الوسم، وعند التساوي الأخير يفوز.
تحدٍّ برمجي: قائمة الأسعار
متوسطنسّق قائمة أسعار المقهى في تبويب style.css باستخدام المحددات المناسبة. لا تعدّل index.html.
- كل الأسعار (الصنف price) بلون أخضر #2E8B3A.
- العنصر المميز (المعرّف best) بخلفية #FFF3CD.
- الروابط داخل nav فقط بلون أبيض وخلفية #3B2A1A.
- عند مرور الفأرة على زر الطلب (الصنف order) تصبح خلفيته #E07A1F.
👀 اعرض شكل الناتج المطلوب
- كل الأسعار خضراء #2E8B3A.
- خلفية #best هي #FFF3CD.
- روابط nav بيضاء بخلفية #3B2A1A.
- رابط الشروط خارج nav لم يتغيّر.
- قاعدة hover لزر الطلب بخلفية #E07A1F.
💡 تلميح 1
💡 تلميح 2
order:hover { … }حاول بنفسك أولًا؛ للمسألة أكثر من حلّ صحيح.
<nav> <a href="#">الرئيسية</a> <a href="#">القائمة</a></nav><h1>الأسعار</h1><p>قهوة عربية <span class="price">8</span></p><p id="best">قهوة اليوم <span class="price">12</span></p><p>شاي <span class="price">5</span></p><p>اقرأ <a href="#">الشروط</a></p><button class="order">اطلب</button>
.price { color: #2E8B3A;}#best { background: #FFF3CD;}nav a { color: white; background: #3B2A1A;}.order:hover { background: #E07A1F;}