logo

Медіа запити (media queries) в CSS

Медіа запити (media queries) є потужним інструментом у CSS, який дозволяє розробникам створювати адаптивні та респонсивні веб-сайти. Вони дозволяють застосовувати різні стилі залежно від характеристик пристрою користувача, таких як ширина екрану, орієнтація пристрою чи тип носія.

Що таке медіа запити?

Медіа запити - це функція CSS3, яка дозволяє застосовувати стилі залежно від характеристик пристрою, на якому відображається веб-сторінка. Вони працюють шляхом перевірки певних умов, і якщо ці умови виконуються, застосовуються відповідні стилі.

Синтаксис медіа запиту виглядає наступним чином:

@media тип_носія and (умова) {
  /* CSS правила */
}

Де “тип_носія” може бути, наприклад, “screen” (для екранів), “print” (для друку), “all” (для всіх типів носіїв), а “умова” - це певна характеристика пристрою, яку ми перевіряємо.

Більше можна почитати на сайті MDN.

Типи носіїв

Типи носіїв вказують, для якого виду пристрою призначені стилі. Найпоширеніші типи носіїв включають:

Наприклад, якщо ми хочемо застосувати певні стилі тільки при друку, ми можемо використати такий медіа запит:

@media print {
  body {
    font-size: 12pt;
    color: black;
  }
}

Умови медіа запитів

Умови в медіа запитах дозволяють нам точніше визначити, коли застосовувати певні стилі. Ось деякі поширені умови:

Ширина viewport

Ми можемо застосовувати стилі залежно від ширини viewport (видимої області сторінки). Це особливо корисно для створення респонсивного дизайну.

@media screen and (max-width: 600px) {
  .container {
    width: 100%;
    padding: 10px;
  }
}

У цьому прикладі, коли ширина екрану 600 пікселів або менше, контейнер займатиме 100% ширини і матиме внутрішній відступ 10 пікселів.

Орієнтація пристрою

Ми можемо застосовувати різні стилі залежно від того, чи пристрій знаходиться в портретній чи ландшафтній орієнтації:

@media screen and (orientation: landscape) {
  .sidebar {
    float: left;
    width: 30%;
  }
  
  .main-content {
    float: right;
    width: 70%;
  }
}

Цей код розміщує бічну панель зліва, а основний вміст справа, коли пристрій знаходиться в ландшафтній орієнтації.

Комбінування умов

Ми можемо комбінувати кілька умов в одному медіа запиті, використовуючи логічні оператори and, or, та not.

@media screen and (min-width: 600px) and (max-width: 900px) {
  .container {
    width: 80%;
    margin: 0 auto;
  }
}

Цей медіа запит застосовується, коли ширина екрану знаходиться між 600 і 900 пікселями.

Breakpoints

Breakpoints - це точки, в яких наш дизайн змінюється, щоб краще відповідати розміру екрану. Вибір правильних breakpoints є ключовим для створення ефективного респонсивного дизайну.

Хоча конкретні breakpoints можуть відрізнятися залежно від дизайну, ось загальний підхід:

/* Мобільні пристрої */
@media screen and (max-width: 600px) {
  /* Стилі для мобільних */
}

/* Планшети */
@media screen and (min-width: 601px) and (max-width: 900px) {
  /* Стилі для планшетів */
}

/* Десктопи */
@media screen and (min-width: 901px) {
  /* Стилі для десктопів */
}

Підхід “Mobile First”

“Mobile First” - це підхід до веб-дизайну, при якому ми спочатку розробляємо версію сайту для мобільних пристроїв, а потім поступово додаємо складніші макети та функціональність для більших екранів.

У CSS це виглядає так:

/* Базові стилі для всіх пристроїв */
.container {
  width: 100%;
  padding: 10px;
}

/* Стилі для планшетів */
@media screen and (min-width: 600px) {
  .container {
    width: 80%;
    margin: 0 auto;
  }
}

/* Стилі для десктопів */
@media screen and (min-width: 900px) {
  .container {
    width: 70%;
    max-width: 1200px;
  }
}

Цей підхід забезпечує, що наш сайт добре виглядає на всіх пристроях, починаючи з найменших.

Медіа запити - це потужний інструмент для створення адаптивних та респонсивних сайтів. Вони дозволяють вам точно контролювати, як ваш сайт виглядає на різних пристроях та в різних умовах перегляду. Розуміння та ефективне використання медіа запитів є ключовим навиком для сучасного веб-розробника.

Експериментуйте з різними умовами та комбінаціями медіа запитів, щоб створювати сайти, які чудово виглядають на всіх пристроях. Хороший адаптивний дизайн - це не просто зміна розмірів елементів, але й адаптація всього користувацького досвіду до різних контекстів використання.