الرئيسية تعليم لغات البرمجة الدرس الثالث: التصميم المتجاوب واستخدام Media Queries في CSS

الدرس الثالث: التصميم المتجاوب واستخدام Media Queries في CSS

amr gamal سبتمبر 19, 2026

الدرس الثالث: التصميم المتجاوب واستخدام Media Queries في CSS

في الدروس السابقة من هذه السلسلة، تعاملنا مع التنسيقات الثابتة وتوزيع العناصر باستخدام أدوات متقدمة مثل Flexbox وGrid بناءً على أبعاد متوقعة للشاشات. لكن الواقع العملي لواجهات الويب اليوم يفرض علينا التعامل مع مئات الأجهزة المختلفة في أحجامها ودقة شاشاتها، بدءاً من الساعات الذكية وصولاً إلى الشاشات فائقة العرض. هنا يأتي دور التصميم المتجاوب (Responsive Design) كركيزة أساسية لضمان تجربة مستخدم مرنة وقابلة للقراءة في كل ظرف وبغض النظر عن جهاز المستخدم.

في هذا الدرس، سننتقل بالمستوى البرمجي خطوة إلى الأمام عبر دراسة متعمقة لكيفية استخدام استعلامات الوسائط (Media Queries) في لغة CSS للتحكم في خصائص العناصر بناءً على خصائص جهاز المستخدم. سنركز على بناء أنظمة تنسيق مرنة لا تعتمد فقط على تثبيت البكسلات، مع تفصيل الاستراتيجيات الهندسية المتبعة وكيفية تجنب الأخطاء الشائعة التي تقع فيها الفرق البرمجية.

مفهوم التصميم المتجاوب ودور Media Queries

التصميم المتجاوب ليس مجرد جعل الموقع يظهر بشكل أصغر على الهواتف المحمولة، بل هو إعادة توظيف المساحات والعناصر لتناسب السياق البصري والوظيفي للجهاز المستخدم. وMedia Queries هي الأداة البرمجية في CSS التي تسمح لنا بتطبيق قواعد تنسيق محددة فقط عندما تتحقق شروط معينة، مثل عرض شاشة الجهاز (Viewport Width)، أو ارتفاعها، أو اتجاهها (Orientation)، أو حتى دقة الألوان (Color Gamut).

تعتمد الفكرة الأساسية لاستعلامات الوسائط على فحص بيئة العرض؛ فإذا كان عرض الشاشة أقل من قيمة معينة أو يقع ضمن نطاق محدد، يتم تنفيذ مجموعة قواعد بديلة تتجاوز القواعد الافتراضية. هذا المفهوم يتطلب منا التفكير بطريقة منهجية، إما باتباع نمط (Mobile-First) أي البدء بتصميم الهواتف وتوسيع التنسيقات للشاشات الأكبر، أو نمط (Desktop-First) أي البدء بالحواسيب وتقليص العناصر للشاشات الأصغر. وغالباً ما يُفضل النمط الأول في التطبيقات الحديثة لأنه يقلل من حجم الكود البرمجي المنفذ على الأجهزة ذات الموارد المحدودة.

بناء أول Media Query وعرضها العملي

لنأخذ مثالاً عملياً لشبكة عرض منتجات (Grid) تتألف من ثلاثة أعمدة في الشاشات الكبيرة، وتتحول تدريجياً إلى عمود واحد في الشاشات الصغيرة. سنكتب كود HTML أولاً، ثم نتبعه بملف CSS يحتوي على التنسيقات الأساسية والمتجاوبة.

هذا هو هيكل العناصر الخاص ببطاقات المنتجات:

<div class="products-container">
  <div class="product-card">المنتج الأول</div>
  <div class="product-card">المنتج الثاني</div>
  <div class="product-card">المنتج الثالث</div>
</div>

والآن نكتب أكواد CSS الخاصة بتنسيق هذه البطاقات وقواعد التجاوب الخاصة بها:

/* التنسيقات الأساسية للشاشات الكبيرة (Desktop First) */
.products-container {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
  padding: 20px;
}

.product-card {
  background-color: #f4f4f4;
  padding: 30px;
  text-align: center;
  border-radius: 8px;
  font-family: sans-serif;
}

/* التنسيق للشاشات المتوسطة (مثل الأجهزة اللوحية) */
@media screen and (max-width: 1024px) {
  .products-container {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* التنسيق للشاشات الصغيرة (مثل الهواتف المحمولة) */
@media screen and (max-width: 768px) {
  .products-container {
    grid-template-columns: 1fr;
  }
  .product-card {
    padding: 15px;
  }
}

شرح المثال وتحليل النتائج

في الكود أعلاه، قمنا بتقسيم القواعد البرمجية إلى ثلاثة أقسام رئيسية تضمن تدفق التنسيقات بسلاسة:

  • القاعدة العامة (.products-container): وضعنا فيها التنسيق الافتراضي الذي يعمل على الشاشات الواسعة، حيث يتم توزيع العناصر على ثلاثة أعمدة باستخدام خاصية Grid وتقسيم المساحة بالتساوي (1fr لكل عمود).
  • استعلام الوسائط الأول (max-width: 1024px): نخبر المتصفح من خلاله أنه عندما يصبح عرض الشاشة 1024 بكسل أو أقل، يجب تغيير عدد الأعمدة إلى عمودين بدلاً من ثلاثة، لضمان عدم ضغط المحتوى وجعله غير مقروء.
  • استعلام الوسائط الثاني (max-width: 768px): عندما تنخفض الشاشة إلى 768 بكسل أو أقل (وهو العرض الشائع للأجهزة اللوحية الصغيرة والهواتف الذكية)، تتحول الشبكة إلى عمود واحد (1fr)، مع تقليل الحشو الداخلي (Padding) للبطاقات لتلائم المساحة الضيقة للشاشة وتجنب ظهور شريط التمرير الأفقي.

استخدام كلمة مفتاحية مثل screen يعني أن هذه التنسيقات مخصصة لشاشات العرض المرئية وليست لشاشات الطباعة أو قارئات الشاشة المخصصة للمكفوفين، بينما يحدد max-width الحد الأقصى لعرض منطقة العرض (Viewport) التي تتفعل عندها هذه القاعدة.

الوحدات النسبية ودورها في تقليل استعلامات الوسائط

في المستوى المتقدم من كتابة أكواد CSS، يجب التوقف عن الاعتماد المطلق على بكسلات الشاشة المطلقة (px) في تحديد كل أبعاد الصفحة. استخدام الوحدات النسبية مثل النسب المئوية (%), ووحدات عرض الشاشة (vw و vh)، ووحدة الخط الأساسية (rem و em) يقلل بشكل كبير من عدد استعلامات الوسائط التي تحتاج إلى كتابتها وصيانتها.

على سبيل المثال، بدلاً من تغيير حجم الخط في كل استعلام وسائط جديد، يمكنك ربط حجم الخط الأساسي بعرض الشاشة باستخدام دالة clamp() الحديثة، أو استخدام وحدات الـ rem مع عناصر مرنة. دعنا نرى كيف يمكن دمج متغيرات CSS مع الاستعلامات للحصول على مرونة أكبر وسهولة في قراءة الكود:

:root {
  --main-padding: 40px;
  --heading-size: 2.5rem;
}

@media screen and (max-width: 768px) {
  :root {
    --main-padding: 15px;
    --heading-size: 1.8rem;
  }
}

body {
  padding: var(--main-padding);
}

h1 {
  font-size: var(--heading-size);
}

هنا قمنا بتعريف متغيرات عامة في نطاق الجذر (:root) وتعديل قيم هذه المتغيرات داخل استعلام الوسائط، مما يجعل الصيانة أسهل بكثير بدلاً من تكرار كتابة الخصائص لعشرات العناصر المختلفة وتتبعها في أجزاء متفرقة من ملف التنسيقات.

استراتيجيات متقدمة: Mobile-First مقابل Desktop-First

عند بناء مشاريع ضخمة، تعد استراتيجية الكتابة أمراً حاسماً لأداء الموقع ونظافة الكود. استراتيجية Mobile-First تبدأ بكتابة التنسيقات الأساسية المخصصة للشاشات الصغيرة أولاً، ثم استخدام استعلامات الوسائط المزودة بـ min-width لتوسيع العناصر للشاشات الأكبر. هذه الطريقة تضمن أن الأجهزة الضعيفة (مثل الهواتف المحمولة) تقوم بتحميل وتنفيذ الحد الأدنى فقط من التنسيقات.

مثال على نمط Mobile-First باستخدام min-width:

/* التنسيق الأساسي للهواتف المحمولة */
.sidebar {
  display: none;
}

/* للشاشات التي تبدأ من 768 بكسل فما فوق */
@media screen and (min-width: 768px) {
  .sidebar {
    display: block;
    width: 250px;
  }
}

أخطاء شائعة عند استخدام Media Queries

يقع العديد من المطورين في أخطاء هيكلية تؤدي إلى تداخل التنسيقات أو بطء الأداء البرمجي للصفحة وتدهور تجربة المستخدم. من أبرز هذه الأخطاء:

  • الخلط بين منطق Mobile-First و Desktop-First: استخدام max-width عشوائياً بجانب min-width في نفس الملف دون استراتيجية واضحة يؤدي إلى تداخل القواعد وصعوبة بالغة في تتبع سبب تطبيق تنسيق معين على عنصر ما.
  • الإفراط في عدد نقاط التوقف (Breakpoints): كتابة استعلام وسائط لكل جهاز جديد في السوق (آيفون بمعيار معين، جالكسي بمعيار آخر) هو ممارسة هندسية سيئة. الأفضل هو بناء نقاط التوقف بناءً على محتوى الموقع نفسه ومتى يبدو التصميم غير مريح للعين أثناء تغيير حجم النافذة، وليس بناءً على مقاسات أجهزة محددة.
  • نسيان وسم Viewport Meta: عدم إضافة وسم التجاوب داخل ملف HTML الأساسي، مثل الوسم الموجود في المثال أدناه، سيجعل متصفحات الهواتف تتعامل مع الصفحة كشاشة حاسوب سطح مكتب مصغرة ويتم تصغيرها قسراً، ولن تعمل أي استعلامات وسائط بشكل صحيح مهما كانت صحة كود CSS.
<meta name="viewport" content="width=device-width, initial-scale=1.0">

طريقة التحقق والفحص والاختبار النهائي

لا تعتمد أبداً على تصغير نافذة المتصفح العادية وحدها كاختبار نهائي للتصميم المتجاوب. استخدام أدوات المطورين في المتصفح (Developer Tools) وبالتحديد وضع محاكاة الأجهزة (Device Toolbar) يُعد أمراً لا غنى عنه.

تتيح لك هذه الأداة اختيار دقة شاشات حقيقية واختبار السلوك عند تدوير الجهاز (Orientation change)، بالإضافة إلى محاكاة سرعات اتصال شبكي ضعيفة (Throttling) للتأكد من أداء العناصر المرئية وسلاسة انتقال الحركات والتنسيقات دون التأثير على استقرار واجهة المستخدم.

خلاصة الدرس

التصميم المتجاوب باستخدام Media Queries يمنحك السيطرة الكاملة على مظهر موقعك بمختلف أحجام الشاشات وبيئات العرض. الاعتماد على استراتيجية برمجية واضحة (سواء بالبدء بالهواتف أو الحواسيب)، وتجنب التشتت في كثرة نقاط التوقف غير الضرورية، والاعتماد على الوحدات النسبية والمتغيرات، هي الأسس الحقيقية التي تفرق بين مطور مبتدئ ومطور محترف قادر على بناء واجهات ويب نظيفة، سريعة، وقابلة للتوسع في المستقبل.

الكاتب
عمرو جمال

محرر متخصص في تطوير قوالب بلوجر وووردبريس وتقديم شروحات التقنية. أقدم حلولاً مبتكرة لتصميم مواقع عصرية وجذابة.