تخطَّ إلى المحتوى

:where()

تجميع بلا أولوية — where :where()

:where() يجمّع محدّدات مثل :is() تمامًا، لكن نتيجته دائمًا بأولوية صفر — سهل التجاوز لاحقًا.

:where() توأم :is() في الصياغة والسلوك: قائمة محدّدات متسامحة تُختصر بسطر واحد. الفرق الوحيد لكنه جوهري: مهما كانت قوة المحدّدات بداخله، الأولوية الناتجة تساوي صفرًا دائمًا.

هذا يجعله الخيار المثالي عند كتابة أنماط أساسية يُفترض أن يسهل على أي مطوّر لاحق تجاوزها بمحدّد بسيط: مكتبات مكوّنات، إعادة ضبط (Reset)، ثيمات افتراضية. لو استُخدم :is() في هذه الحالات، قد تُفاجَأ بأنماط بسيطة لاحقة تعجز عن كسر قاعدة كانت تبدو غير مهمّة، لأن أولويتها الفعلية أعلى مما تبدو من شكل الكود.

الصياغة

:where(header, nav, footer) a {
  color: gray;   /* أولوية = 0، سهلة التجاوز */
}

footer a { color: blue; }  /* تتغلّب عليها بمحدّد بسيط جدًا */

⚡ جرّب بنفسك

عدّل الكود واضغط «تحديث» لترى النتيجة فورًا — التجربة أفضل معلّم.

🎨 محرّر HTML/CSS
<style>
  :where(.card, .panel) p { color: #64748b; }
  .special p { color: #7c5cff; font-weight: bold; }
</style>
<div class="card special"><p>هذا النص بنفسجي رغم أن :where() جاءت أولًا — لأن أولويتها صفر.</p></div>
النتيجة المباشرة:

أهم القيم

القيمةالوظيفة
:where(a, b, c)نفس مطابقة :is() لكن بأولوية صفر ثابتة
سهولة التجاوزأي محدّد لاحق مهما بسط يتغلّب عليها
الاستخدام النموذجيأنماط أساسية/مكتبات يُراد لها أن تُكسَر بسهولة

💡 نصائح عملية

  • اجعل أنماط الـ Reset والمكتبات الأساسية بداخل :where() ليسهل على مستهلكيها تخصيصها
  • إن لم تتذكّر الفرق: :is() = أقوى وسيط، :where() = صفر دائمًا

⚠️ أخطاء شائعة

  • استخدامه ثم التفاجؤ بأن قاعدة أخرى بسيطة كسرَتها بسهولة — هذا هو الهدف منه، وليس خطأً
  • الخلط بينه وبين :is() في مشروع فيه تعارضات أولوية غامضة

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار CSS الكامل بالعربي.

📚 للتعمق التقني الكامل بالإنجليزية: MDN Web Docs