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

!important في CSS: كيف تعمل ومتى تستخدمها

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

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

ماذا تفعل !important

إضافة !important بعد القيمة تجعل ذلك التصريح يفوز على كل تصريح عادي للخاصية نفسها على العنصر نفسه. لا تعود خصوصية المحدد ولا ترتيب المصدر مهمة.

من دون !important كان محدد المعرّف سيفوز وكان النص سيصبح أزرق. احذف !important في المحرر لترى ذلك.

الصيغة

selector {
  property: value !important;
}

تأتي بعد القيمة وقبل الفاصلة المنقوطة. تنطبق على ذلك التصريح وحده، لا على القاعدة كلها. وتعمل أيضًا في الخصائص المختصرة (margin: 0 !important; تجعل الجوانب الأربعة كلها مهمة) وفي السمة style.

ما الذي يتغلب على ماذا

للأنماط التي يكتبها مؤلف الصفحة، من الأضعف إلى الأقوى:

الرتبةالتصريحمثال
1تصريح عادي في ملف الأنماطp { color: blue; }
2تصريح عادي في السمة style<p style="color: blue">
3!important في ملف الأنماطp { color: blue !important; }
4!important في السمة style<p style="color: blue !important">

داخل الرتبة الواحدة تحسم الخصوصية، ثم ترتيب ظهور التصريحات: اللاحق يفوز.

هذا هو الاستخدام اليومي المشروع الوحيد لـ !important: تجاوز نمط مضمّن لا تستطيع تعديله، مثل نمط يكتبه عنصر واجهة من طرف ثالث.

حين يكون التصريحان كلاهما !important

!important في مواجهة !important تعود إلى القواعد المعتادة: الخصوصية الأعلى تفوز، وعند التعادل يفوز التصريح اللاحق.

هكذا تتصاعد !important: بمجرد أن تستخدمها قاعدة، يجب أن تستخدمها القاعدة التي عليها تجاوزها أيضًا، فتبدأ الخصوصية بالارتفاع من جديد.

خصوصية CSS في جدول واحد

الخصوصية هي وزن المحدد. عدّ ثلاثة أرقام:

العمودما الذي يُعدمثال محددالخصوصية
Aمحددات المعرّف ID#nav(1,0,0)
Bالفئات، السمات، الفئات الزائفة.btn، [type="text"]، :hover(0,1,0) لكل واحد
Cمحددات النوع، العناصر الزائفةp، ::before(0,0,1) لكل واحد
لا شيء*، والمُركِّبات (>، +، ~، المسافة)*، ul > liلا تضيف شيئًا

قارن العمود A أولًا؛ وعند التعادل فقط انظر إلى B ثم C. لذلك يتغلب #nav a (1,0,1) على .menu .item .link a (0,3,1): معرّف واحد يرجح على أي عدد من الفئات.

فهم هذا الجدول هو ما يتيح لك تجنب !important: معظم مشكلات «CSS لا تنطبق» سببها قاعدة أكثر خصوصية في مكان آخر، تراها في لوحة Styles في DevTools وتصريحك مشطوب.

بدائل أنظف

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

ضبط !important من JavaScript

لا يعمل element.style.color = 'red !important': القيمة غير صالحة فتُتجاهل. استخدم setProperty مع وسيط ثالث:

el.style.setProperty('color', '#f59e0b', 'important');

أخطاء شائعة

  • وضعها في المكان الخطأ. color: !important red; غير صالحة؛ مكانها بعد القيمة.
  • استخدامها في @keyframes. التصريحات الموسومة بـ !important داخل الإطارات المفتاحية تُتجاهل.
  • حل كل تعارض بها. ابحث عن القاعدة الفائزة في DevTools وطابِق خصوصيتها أو اخفضها بدلًا من ذلك.
  • توقع أن تؤثر على خاصية أخرى. color: red !important لا تفعل شيئًا لـ background.
  • نسيان أن !important المضمّنة تتغلب على قاعدتك. لا توجد قاعدة في ملفات أنماط الصفحة تستطيع تجاوز style="color: red !important"؛ غيّر السمة نفسها، مثلًا عبر JavaScript.

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

ماذا تفعل !important في CSS؟

تمنح تصريحًا واحدًا الأولوية على كل تصريح عادي للخاصية نفسها على العنصر نفسه، بغض النظر عن خصوصية المحدد أو الترتيب. اكتبها بعد القيمة: color: red !important;.

كيف أتجاوز !important؟

بتصريح !important آخر خصوصيته أعلى، أو بالخصوصية نفسها وموقع لاحق في ملف الأنماط. السمة style المضمّنة مع !important تتغلب على كل !important في ملفات الأنماط.

هل تتغلب !important على الأنماط المضمّنة؟

نعم. تصريح في ملف الأنماط مع !important يتغلب على تصريح عادي في السمة style. لكنه لا يتغلب على تصريح مضمّن موسوم هو نفسه بـ !important.

هل استخدام !important ممارسة سيئة؟

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

كيف تُحسب خصوصية CSS؟

عدّ ثلاثة أعمدة: محددات المعرّف ID، ثم الفئات والسمات والفئات الزائفة، ثم محددات النوع والعناصر الزائفة. قارن عمودًا عمودًا من البداية، فيتغلب #nav a (1,0,1) على .menu .item a (0,2,1). المحدد العام * والمُركِّبات لا تضيف شيئًا.

Coddy programming languages illustration

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

ابدأ الآن