الاستعلامات عن الوسائط

يمكن للمصمّمين تعديل تصميماتهم لتلبية احتياجات المستخدمين. ولعلّ أبرز مثال على ذلك هو شكل جهاز المستخدم، أي عرضه و نسبة العرض إلى الارتفاع للجهاز وما إلى ذلك. باستخدام طلبات الاستعلام عن الوسائط، يمكن للمصمّمين الاستجابة لهذه أشكال النماذج المختلفة.

يتم بدء طلبات الاستعلام عن الوسائط باستخدام الكلمة الرئيسية @media (قاعدة at-rule في CSS)، ويمكن استخدامها لمجموعة متنوعة من حالات الاستخدام.

غالبًا ما يتم عرض المواقع الإلكترونية على الشاشات، ولكن يمكن أيضًا استخدام CSS لتنسيق المواقع الإلكترونية لمخرجات أخرى أيضًا. قد تريد أن تظهر صفحات الويب بشكل معيّن على الشاشة ولكن بشكل مختلف عند طباعتها. ويُتيح طلب أنواع الوسائط ذلك.

في هذا المثال، يكون لون الخلفية رماديًا. أما إذا كانت الصفحة ستُطبع، فيجب أن يكون لون الخلفية شفافًا. ويؤدي ذلك إلى توفير حبر الطابعة للمستخدم.

body {
  color: black;
  background-color: grey;
}

@media print {
  body {
    background-color: transparent;
  }
}

يمكنك استخدام قاعدة at-rule‏ @media في جدول الأنماط على النحو التالي، أو يمكنك إنشاء جدول أنماط منفصل واستخدام السمة media في عنصر link:

<link rel="stylesheet" href="global.css">
<link rel="stylesheet" href="print.css" media="print">

إذا لم تحدد أي نوع وسائط لـ CSS، فسيتم تلقائيًا تحديد قيمة all لنوع الوسائط. هاتان الكتلتان من CSS متساويتان:

body {
  color: black;
  background-color: white;
}
@media all {
   body {
     color: black;
     background-color: white;
   }
}

هذان السطران من HTML متكافئان أيضًا:

<link rel="stylesheet" href="global.css">
<link rel="stylesheet" href="global.css" media="all">

شروط طلب البحث

يمكنك إضافة شروط إلى أنواع الوسائط. ويُطلق عليها اسم الاستعلامات عن الوسائط. لا يتم تطبيق CSS إلا إذا تطابق نوع الوسائط وكان الشرط صحيحًا أيضًا. تُسمّى هذه الشروط ميزات الوسائط.

في ما يلي بنية طلبات الوسائط:

@media type and (feature)

يمكنك استخدام الاستعلامات عن الوسائط على عنصر link إذا كانت الأنماط في ورقة أنماط منفصلة:

<link rel="stylesheet" href="specific.css" media="type and (feature)">

لنفترض أنّك تريد تطبيق أنماط مختلفة بناءً على ما إذا كانت نافذة المتصفّح في الوضع الأفقي (عرض إطار العرض أكبر من ارتفاعه) أو الوضع العمودي (ارتفاع إطار العرض أكبر من عرضه). تتوفّر ميزة وسائط تُسمى orientation يمكنك استخدامها لاختبار ذلك:

@media all and (orientation: landscape) {
   // Styles for landscape mode.
}
@media all and (orientation: portrait) {
   // Styles for portrait mode.
}

أو إذا كنت تفضّل استخدام جداول تصفُّح منفصلة:

<link rel="stylesheet" href="landscape.css" media="all and (orientation: landscape)">
<link rel="stylesheet" href="portrait.css" media="all and (orientation: portrait)">

في هذه الحالة، يكون نوع الوسائط هو all. وبما أنّ هذه هي القيمة التلقائية، يمكنك حذفها إذا أردت:

@media (orientation: landscape) {
   // Styles for landscape mode.
}
@media (orientation: portrait) {
   // Styles for portrait mode.
}

أو باستخدام أوراق أسلوب منفصلة:

<link rel="stylesheet" href="landscape.css" media="(orientation: landscape)">
<link rel="stylesheet" href="portrait.css" media="(orientation: portrait)">

على الرغم من أنّ استخدام جداول تصفُّح منفصلة لأنواع الوسائط المختلفة، مثل print، قد يكون أمرًا جيدًا، قد لا يكون من المفيد استخدام جدول تصفُّح منفصل لكل طلب استعلام عن الوسائط. استخدِم قواعد at-rules‏ @media بدلاً من ذلك.

ضبط الأنماط بناءً على حجم إطار العرض

بالنسبة إلى التصميم السريع الاستجابة، تشكّل أبعاد إطار عرض المتصفّح إحدى ميزات الوسائط الأكثر فائدة. لتطبيق الأنماط عندما تكون نافذة المتصفّح أعرض من عرض معيّن، استخدِم min-width.

@media (min-width: 400px) {
  // Styles for viewports wider than 400 pixels.
}

استخدِم ميزة الوسائط max-width لتطبيق أنماط أقل من عرض معيّن:

@media (max-width: 400px) {
  // Styles for viewports narrower than 400 pixels.
}

يمكنك استخدام أي وحدات طول CSS في الاستعلامات عن الوسائط. إذا كان المحتوى يعتمد على الصور في الغالب، قد تكون وحدات البكسل هي الخيار الأنسب. إذا كان المحتوى يعتمد على النص في أغلب الأحيان، من المنطقي استخدام وحدة نسبية تستند إلى حجم النص، مثل em أو ch:

@media (min-width: 25em) {
  // Styles for viewports wider than 25em.
}

ويمكنك أيضًا دمج الاستعلامات عن الوسائط لتطبيق أكثر من شرط واحد. استخدِم الكلمة and لدمج طلبات البحث عن الوسائط:

@media (min-width: 50em) and (max-width: 60em) {
  // Styles for viewports wider than 50em and narrower than 60em.
}

اختيار نقاط التوقف استنادًا إلى المحتوى

تُعرف النقطة التي يصبح فيها شرط ميزة الوسائط صحيحًا باسم نقطة الإيقاف. من الأفضل اختيار نقاط الإيقاف بناءً على المحتوى الخاص بك بدلاً من الأحجام الشائعة للأجهزة، لأنها عرضة للتغيير مع كل دورة إصدار للتكنولوجيا.

في هذا المثال، يشير 50em إلى النقطة التي تصبح فيها أسطر النص طويلة بشكل غير مريح. لذلك، يتم إنشاء نقطة توقّف لجعل الواجهة أكثر سهولة في القراءة. باستخدام السمة column-count، يتم تقسيم النص إلى عمودَين من تلك النقطة فصاعدًا.

@media (min-width: 50em) {
  article {
    column-count: 2;
  }
}

النُسخ

يمكنك استخدام طلبات البحث عن الوسائط استنادًا إلى ارتفاع إطار العرض، وليس العرض فقط. وقد يكون هذا مفيدًا في تحسين محتوى الواجهة "في الجزء المرئي من الصفحة". في المثال السابق، إذا كان القرّاء يستخدمون نافذة متصفّح عريضة ولكنّها قصيرة، عليهم التمرير للأسفل في عمود واحد ثم التمرير للأعلى مرة أخرى للوصول إلى أعلى العمود الثاني. من الأفضل تطبيق الأعمدة فقط عندما تكون مساحة العرض كافية من حيث العرض والارتفاع.

يمكنك دمج طلبات البحث عن الوسائط لكي لا يتم تطبيق الأنماط إلا عند استيفاء جميع الشروط. في هذا المثال، يجب أن يكون عرض إطار العرض 50em على الأقل وارتفاعه 60em على الأقل لكي يتم تطبيق أنماط الأعمدة. تم اختيار نقاط التوقف هذه استنادًا إلى مقدار المحتوى.

@media (min-width: 50em) and (min-height: 60em) {
  article {
    column-count: 2;
  }
}

توضِّح هذه الأمثلة كيفية استخدام طلبات البحث عن الوسائط لتكييف التصاميم مع شكل جهاز المستخدم، ولكنّها لا تُظهر سوى جزء بسيط من الإمكانات. يمكن أن تتجاوز طلبات البحث عن الوسائط العرض والارتفاع، وتصل إلى الإعدادات المفضّلة للمستخدمين في ما يتعلّق بميزات تسهيل الاستخدام وألوان المظهر. يُعدّ استخدام طلبات الاستعلام عن الوسائط لإجراء تعديلات على التنسيق بداية رائعة للتصميم السريع الاستجابة الذي يستند إلى هذه الميزات وغيرها.

التحقق من فهمك

اختبِر معلوماتك حول طلبات البحث عن الوسائط السريعة الاستجابة.

هل استعلامات الوسائط متوفّرة لحجم الشاشة فقط؟

خطأ
صحيح

هل الشاشات هي المكان الوحيد الذي يتم فيه استخدام محتوى الويب أو عرضه؟

خطأ
صحيح

ما هو نوع الوسائط التلقائي؟

some
none
screen
landscape
all

ما الذي يمكنك استخدامه لمنع المتصفّح من تكبير تصميم على الأجهزة الجوّالة؟

<meta name="viewport" content="width=device-width, initial-scale=1">
HTML5
width: 100%
font-size: 200%
طلبات الوسائط

الاستعلام عن الوسائط الذي ينطبق عندما تكون نافذة المتصفّح أعلى 720px

@media (min-width: 720px)
@media (max-width: 720px)
@media (clamp-width: 720px)
@media (width: 720px)