CSS приклад: @media

Огляд

Медіа-запит @media дозволяє вказати тип носія, для якого буде застосовуватися вказаний стиль. Таблиця 1 містить перелік деяких з них.

Табл. 1. Типи носіїв і їх опис
ТипОпис
allВсі типи. Це значення використовується за замовчуванням.
auralРозмовні синтезатори та програми для відтворення тексту вслух.
brailleПристрої на основі системи Брайля для сліпих.
handheldКишенькові комп'ютери та подібні пристрої.
printДрукарські пристрої, наприклад, принтер.
projectionПроектор.
screenЕкран монітора.
tvТелевізор.

Синтаксис

@media тип1 [, тип2] {
  Опис стилю 
}

Значення

Після ключового слова @media йде один або декілька типів носія, перерахованих у табл. 1; якщо їх більше одного, то вони розділяються між собою комою. Після цього слідують обов'язкові фігурні дужки, всередині яких йде звичайний опис стилевих правил.

Приклад 1

XHTML 1.0CSS2.1IECrOpSaFx

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>@media</title>
  <style type="text/css">
   @media screen { /* Стиль для відображення в браузері */
    body {
     font-family: Arial, Verdana, sans-serif; /* Рублені шрифти */
     font-size: 0.9em; /* Розмір шрифту */
     color: #000080; /* Колір тексту */
    }
    h1 {
     background: #faf0e6; /* Колір фону під текстом */
     border: 2px dashed #800000; /* Рамка навколо заголовка */
     color: #a0522d; /* Колір тексту */
     padding: 7px; /* Відступи навколо тексту */
    }
    h2 {
     color: #556b2f; /* Колір тексту */
     margin: 0; /* Позбавляємо відступи */
    }
    p {
     margin-top: 0.5em; /* Відступ зверху */
    }
   }
   @media print { /* Стиль для друку */
    body {
     font-family: Times, 'Times New Roman', serif; /* Шрифт з засічками */
    }
    h1, h2, p {
     color: #000; /* Чорний колір тексту */
    }
   }
  </style>
 </head>
 <body>
   <h1>Метод ловлі лева в пустелі</h1>
   <h2>Метод послідовного перебору</h2>
   <p>Нехай лев має габаритні розміри LxWxH, де L — довжина лева від кінчика носа 
   до кисті хвоста, W — ширина лева, а H — його висота. Після чого пустельну місцевість розбиваємо на 
   ряд елементарних прямокутників, розміри яких співпадають з шириною і довжиною лева. 
   Враховуючи, що лев може знаходитися не строго на заданому відрізку, а одночасно на 
   двох з них, клітинку для ловлі слід робити збільшеної площі, а саме 2Lx2W. 
   Завдяки цьому ми уникнемо помилки, коли в клітинці опиниться вловлений лише половина 
   лева або, що гірше, лише його хвіст.</p>
   <p>Далі послідовно накриваємо кожен з позначених прямокутників пустелі 
   клітинкою і перевіряємо, чи вловлений лев. Як тільки лев опиниться в клітинці, процедура 
   ловлі вважається завершеною.</p>
 </body>
</html>

У цьому прикладі вводяться два стилі — один для зміни вигляду елементів при їх звичайному відображенні в браузері, а другий — при друку сторінки. При цьому вигляд документа для різних носіїв може суттєво відрізнятися між собою.

Команда @media застосовується в основному для формування одного файлу стилів, який розділений на блоки за типами пристроїв. Іноді варто створити кілька різних CSS-файлів — один для друку, інший для відображення в браузері — і підключати їх до документу за потреби. У такому випадку слід скористатися тегом <link> з атрибутом media, значенням якого виступають ті самі типи, перераховані в табл. 1.

Приклад 2

HTML5CSS2.1IECrOpSaFx

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>@media</title>
  <link media="print, handheld" rel="stylesheet" href="print.css">
  <link media="screen" rel="stylesheet" href="main.css">
 </head>
 <body>
  <p>...</p>
 </body>
</html>

У цьому прикладі використовуються дві таблиці пов'язаних стилів, одна для відображення в браузері, а друга — для друку документа і його перегляду на КПК. Хоча на сторінку завантажуються одночасно два різних стилі, застосовуються вони лише для певних пристроїв.

Часті запитання

  • Q: @media в css як і де використовують?

    A: Медіа-запити (@media) використовуються в CSS для встановлення стилів залежно від характеристик пристрою, на якому відображається сторінка. Наприклад, для адаптивного дизайну.

  • Q: Як використовувати @media в CSS для різних розмірів екрану?

    A: Використовуйте @media screen and (max-width: 768px) { ... } для стилів, які будуть застосовуватися на екранах шириною до 768 пікселів.

  • Q: Як використовувати @media в CSS для друку?

    A: Використовуйте @media print { ... } для стилів, які будуть застосовуватися при друку сторінки.

  • Q: Як використовувати @media в CSS для роздільної здатності екрану?

    A: Використовуйте @media screen and (min-resolution: 300dpi) { ... } для стилів, які будуть застосовуватися на екранах з роздільною здатністю не менше 300 dpi.

  • Q: Як використовувати @media в CSS для певних пристроїв?

    A: Використовуйте @media only screen and (min-device-width: 768px) and (max-device-width: 1024px) { ... } для стилів, які будуть застосовуватися на певних пристроях з шириною екрану від 768 до 1024 пікселів.