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

٢١ يوليو ٢٠٢٦

الفرق بين Container Queries و Media Queries في CSS بالعربي

شارك المقال:

عند بناء CSS متجاوب، أغلبنا اتعلّم @media كأداة وحيدة للتجاوب. لكن فيه أداة أحدث بتحل مشكلة كانت عالقة لسنين: Container Queries.

Media Queries — بتسأل عن الشاشة

@media بتفحص عرض نافذة المتصفح كلها، وبتطبّق الأنماط بناءً على هيك.

@media (max-width: 600px) {
  .card { flex-direction: column; }
}

المشكلة: نفس .card ممكن يظهر جوّا شريط جانبي ضيّق وجوّا عمود رئيسي واسع — بنفس الشاشة بالضبط. @media ما بتفرّق بين الحالتين، لأنها بتسأل عن الشاشة مش عن مكان العنصر.

Container Queries — بتسأل عن الحاوية

@container بتفحص عرض عنصر أب محدَّد بدل الشاشة. أول شي لازم تعلن هالعنصر كحاوية:

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

@container (width > 400px) {
  .card { flex-direction: row; }
}

هلق .card بيتصرّف حسب عرض .slot يلي هو جواته — بغض النظر عن عرض الشاشة. نفس المكوّن، بيتصرّف بذكاء أينما حطّيته بالصفحة.

جدول المقارنة

الجانبMedia QueriesContainer Queries
بتستعلم عنعرض الشاشة/النافذةعرض حاوية أب محدَّدة
إعداد مسبقولا شي، تشتغل مباشرةلازم container-type عالأب
المكوّن بيتصرّفنفس الشكل بكل مكان بالصفحةحسب مكانه الفعلي
الأنسب لـتخطيط الصفحة العاممكوّنات قابلة لإعادة الاستخدام

كيف تختار؟

  • عم تقرر تخطيط الصفحة كلها (هل نعرض القائمة الجانبية أصلًا على موبايل)؟ → Media Query.
  • عندك مكوّن (بطاقة، ويدجت) لازم يتصرف بذكاء بغض النظر وين حطّيته؟ → Container Query.
  • الأفضل: استخدمهما مع بعض — media query للقرار الكبير، container query لتفاصيل المكوّن.

الخلاصة

مش منافسة، الاثنان بيكملوا بعض: @media تسأل "شو عرض الشاشة؟"، و@container تسأل "شو عرض المكان يلي أنا فيه؟". إتقانهما مع بعض بيخليك تبني مكوّنات فعلًا قابلة لإعادة الاستخدام بأي مكان بالصفحة.

تعمّق أكتر في مسار CSS.

📚 مصادر رسمية للتعمّق: freeCodeCamp — مصدر تعلّم البرمجة

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

ما الفرق الأساسي بين Container Queries و Media Queries؟

media queries تستعلم عن عرض نافذة المتصفح (الشاشة) ككل. container queries تستعلم عن عرض عنصر أب محدَّد أعلنته أنت كحاوية، بغض النظر عن عرض الشاشة نفسها.

هل container queries تحتاج إعدادًا إضافيًا؟

نعم. لازم تضيف container-type: inline-size على العنصر الأب أولًا، بعدين تكتب @container (width > ...) على أبنائه. media queries تعمل مباشرة بلا أي إعداد مسبق.

هل container queries تلغي الحاجة لـ media queries؟

لا. الأفضل استخدامهما معًا: media query لقرارات تخطيط الصفحة العامة (مثل: هل نعرض الشريط الجانبي أصلًا؟)، وcontainer query لسلوك المكوّن نفسه أينما ظهر داخل الصفحة.

اقرأ أيضًا

تصفّح كل المقالات في المدوّنة، أو ابدأ التعلّم من المسارات و خرائط الطريق.