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

@container

استعلامات الحاويات @container

@container يجعل المكوّن يتكيّف حسب عرض حاويته الفعلية لا عرض الشاشة — مكوّنات ذكية قابلة لإعادة الاستخدام في أي مكان.

media queries تسأل عن عرض الشاشة، لكن نفس المكوّن (بطاقة، شريط جانبي) قد يظهر بعرض 300px داخل عمود ضيّق و900px داخل عمود رئيسي — على نفس الشاشة بالضبط. media queries لا ترى هذا الفرق لأنها تراقب النافذة لا مكان العنصر.

استعلامات الحاويات تحل المشكلة: أعلن عنصرًا أبًا كحاوية عبر container-type: inline-size، ثم استعلم عن عرضه بـ @container (width > 400px) { ... }. النتيجة مكوّن يتصرف بذكاء أينما وُضع، بدل تصميمه لسياق واحد فقط. توجد أيضًا وحدات قياس مكافئة لـ vw لكن نسبةً للحاوية: cqw وcqi وcqh وcqb.

الصياغة

.slot { container-type: inline-size; }

@container (width > 400px) {
  .card { display: flex; gap: 16px; }
}

.card h2 { font-size: clamp(1rem, 5cqi, 2rem); }

⚡ جرّب بنفسك

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

🎨 محرّر HTML/CSS
<style>
  .slot { container-type: inline-size; border: 1px dashed #94a3b8; padding: 8px; resize: horizontal; overflow: auto; width: 500px; max-width: 100%; }
  .card { background: #ede9fe; padding: 10px; border-radius: 8px; }
  @container (width < 350px) { .card { background: #fee2e2; } }
</style>
<div class="slot"><div class="card">قلّص عرض هذا الصندوق (اسحب من الزاوية) لترى تغيّر اللون حسب عرض الحاوية لا الشاشة.</div></div>
النتيجة المباشرة:

أهم القيم

القيمةالوظيفة
container-type: inline-sizeيفعّل الاستعلام عن العرض — الأكثر استخدامًا
container-nameيسمّي الحاوية لاستهدافها صراحة عند التداخل
cqw / cqi / cqh / cqbوحدات قياس نسبية لأبعاد الحاوية نفسها

💡 نصائح عملية

  • استخدمهما معًا: media query لتخطيط الصفحة العام، وcontainer query لسلوك المكوّن الداخلي
  • container-type: inline-size كافٍ في أغلب الحالات؛ size يفرض احتواءً أوسع قد يكسر التخطيط

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

  • كتابة @container بلا container-type على أب → الاستعلام يُتجاهَل بصمت
  • الاستعلام عن عرض العنصر من داخل نفسه بدل عرض أبيه

خصائص ذات صلة

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

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