جاري التحميل...

!important في CSS

أنهيت لاندينغ هادئة بالتوكنات وFlex وGrid والتركيز. يبدأ Optional Advanced بأداة يلتقيها كثير من المبتدئين مبكرًا: !important. يمكنها فرض فوز إعلان — ويمكنها تحويل ورقة الأنماط إلى صراخ. هذه الجلسة توضّح ماذا تفعل، لماذا وُجدت، وكيف تبقى هادئًا حتى لا تحتاجها تقريبًا أبدًا.

الإجابة المباشرة

!important يعلّم إعلانًا واحدًا ليتفوق على صراعات Specificity وترتيب المصدر العادية لتلك الخاصية (ضمن نفس الأصل). استخدمه لتجاوز نادر — مثل أداة صغيرة يجب أن تكسر قاعدة طرف ثالث لا تستطيع تعديلها — لا كزر يومي «اجعل CSS يسمع». فضّل محددًا أوضح أو ترتيبًا لاحقًا أو إعادة هيكلة صغيرة أولًا.

لماذا وُجد؟

تتصادم أوراق الأنماط. Specificity وترتيب المصدر يحلّان معظم النزاعات. !important مخرج طوارئ حين لا يكفي السلم العادي: صفحة مضيف لا تتحكم بها، قاعدة مكتبة يجب تجاوزها مرة، أو تجربة تصحيح قصيرة. اللغة تتضمنه لأن الويب يشارك CSS فوضويًا أحيانًا — لا لأن كل تعارض مبتدئ يستحق علمًا أعلى صوتًا.

الصيغة

ضع !important بعد القيمة وقبل الفاصلة المنقوطة:

!important beats a stronger normal selector

css
#title {
color: #9f1239;
}

.note {
color: #0f766e !important;
}

لـ <h1 id="title" class="note"> يفوز لون الـ class مع !important — رغم أن الـ id يتفوق عادةً على الـ class. هذه هي الفائدة كلها والمخاطرة كلها: خرجت عن السلم اليومي.

علاقته بالـ cascade (ليس لونًا جديدًا)

!important لا يغيّر معنى الخاصية. يغيّر أي إعلان يفوز. اسأل أولًا: «هل أحد الطرفين معلّم مهمًا؟» ثم بين الإعلانات المهمة لنفس الأصل ما زالت Specificity والترتيب مهمّين. بين الإعلانات العادية يبقى درس Specificity كما هو.

عندما يتصادم قاعدتا !important

إن صرخ الطرفان، ما زال الـ cascade يحتاج فائزًا. لأنماط المؤلف بنفس الأصل، تفوز Specificity الأعلى بين الإعلانات المهمة؛ إن تساوتا، تفوز قاعدة !important اللاحقة.

Two !important — later equal-weight wins

css
.card {
border-color: #cbd5e1 !important;
}

.card {
border-color: #0f766e !important;
}

كلا المحددين class واحد وكلاهما يستخدم !important. يفوز لون الحدود الثاني. تكديس المزيد من !important لا يجعل CSS أصح — فقط ينقل الشجار إلى غرفة أعلى صوتًا.

استخدام نادر وصادق

أحيانًا يجب أن تفوز أداة صغيرة على CSS لا تستطيع تعديله بعقلانية (سمة ودجت، كتلة مضمّنة). أبقِ التجاوز ضيقًا — خاصية واحدة، محدد واحد، تعليق يوضح السبب:

Narrow utility override (use sparingly)

css
/* Override third-party widget link color we cannot edit */
.widget a {
color: #0f172a !important;
}

ذلك يختلف عن رشّ !important على كل لون علامة «احتياطًا». وثّق السبب؛ احذف العلم حين يزول التعارض.

فضّل الإصلاح الهادئ

معظم لحظات «أحتاج !important» هي في الحقيقة «محدداتي متشابكة». ارفع الوضوح لا الصوت:

Refactor without !important

css
/* Tangled: fighting an id with noise */
#hero .cta {
background: #64748b;
}

.cta-primary {
background: #0f766e;
}

/* Calmer: one clear class owns the CTA look */
.cta-primary {
background: #0f766e;
color: #fff;
padding: 0.75rem 1.25rem;
border-radius: 0.5rem;
}

إن استطاع HTML حمل cta-primary (أو أسقطت id غير ضروري من حرب الأنماط)، تفوز بلا !important. هذه العادة تتوسع؛ الصراخ لا يفعل.

دليل القرار

📊 Normal cascade vs !important

Situation Prefer Avoid
Two of your rules fight سلم Specificity أو ترتيب لاحق !important تلقائي
Equal specificity, wrong winner انقل القاعدة لاحقًا / أوضح المحدد علّم الطرفين مهمّين
Third-party CSS you cannot edit !important ضيق واحد (مع تعليق) تغطية الودجت كله
Debugging which rule applies !important مؤقت ثم احذفه أعلام تصحيح في الإنتاج
“This color feels important to the brand” توكنات/classes أقوى !important عاطفي على كل توكن

جرّب بنفسك

  1. أعد زوج id مقابل class: #title كستنائي، .note فيروزي مع !important — تأكد أن الفيروزي يفوز على عنصر يملك الاثنين.
  2. أزل !important وتأكد أن الكستنائي يعود (الـ id يفوز من جديد).
  3. اكتب قاعدتي .card كلاهما بـ border-color و!important — تأكد أن اللاحقة تفوز.
  4. أعد هيكلة صراع واحد بتبسيط class حتى لا تحتاج العلم.
  5. اختياري: أضف تعليقًا سطرًا فوق أي !important متبقٍ يوضح قيد الطرف الثالث أو المضيف.

أخطاء شائعة

  • اعتبار !important الإصلاح الافتراضي لكل تعارض
  • تخيل أن القاعدة كلها «مهمة» — العلم للإعلان فقط
  • محاربة مكتبة بعشرات أسطر !important بدل تجاوز ضيق واحد
  • نسيان أن !important لاحقًا مساوي الوزن قد يهزمك
  • خلط «مهم للعلامة» مع كلمة CSS — لا علاقة بينهما

ملخص

  • !important يجعل الإعلان يفوز على صراعات Specificity/الترتيب العادية لتلك الخاصية
  • وُجد للتجاوزات النادرة في CSS مشترك فوضوي — لا لتعارضات التعليم اليومية
  • قاعدتا !important ما زالتا تُحسمان بـ Specificity وترتيب المصدر
  • فضّل محددات أوضح أو ترتيبًا أو إعادة هيكلة؛ أبقِ الاستخدام الحقيقي قليلًا ومعلّقًا
  • Optional Advanced التالي: صور الرش (image-sprites)

🧠 اختبر معرفتك

جاهز للبدء

اختبر معرفتك

تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع

❓
6
الأسئلة
🎯
70%
للنجاح
♾️
∞
الوقت
🔄
∞
المحاولات

📝 التعليمات

  • اقرأ كل سؤال بعناية
  • اختر أفضل إجابة لكل سؤال
  • يمكنك إعادة الاختبار عدة مرات كما تريد
  • سيتم عرض تقدمك في الأعلى