Viewport и media queries: адаптация под экраны разных устройств

Почему адаптация под экраны — это важно?

Представьте, что ваш сайт — это вода. На большом экране (океан) она растекается широко, на телефоне (стакан) — принимает его форму. Без адаптации сайт будет выглядеть как океан, втиснутый в стакан: мелко, нечитабельно, с горизонтальным скроллом.

Решение:
- viewport — определяет «правила игры» для масштабирования.
- media queries — дают контроль над стилями на разных устройствах.


Волшебная строка: <meta name="viewport">

Без этого тега мобильные браузеры будут имитировать десктопный экран, сжимая всё в маленькое нечитаемое пятно.

<meta name="viewport" content="width=device-width, initial-scale=1.0">

Разберём атрибуты:
- width=device-width — ширина области просмотра равна ширине устройства.
- initial-scale=1.0 — масштаб по умолчанию 100%, без зума.

💡 Добавляйте этот тег в <head> всегда. Без него адаптивный дизайн не работает корректно!


Media Queries: CSS-детективы

Media queries — это условия в CSS, которые проверяют характеристики устройства (ширину, ориентацию, разрешение) и применяют стили только если условие истинно.

Базовая структура

@media (условие) {
  /* Стили, которые сработают при выполнении условия */
}

Пример: Меняем цвет фона на маленьких экранах

body {
  background-color: lightblue;
}

@media (max-width: 600px) {
  body {
    background-color: coral; /* Только если ширина ≤ 600px */
  }
}

Точки останова (Breakpoints)

Это «переломные моменты», где дизайн меняется. Традиционно используют ширины:

Устройство Breakpoint (max-width)
Телефоны (портрет) 480px – 600px
Планшеты (портрет) 601px – 768px
Планшеты (ландшафт) 769px – 1024px
Десктопы 1025px+

🛠️ Совет: Начинайте с mobile-first (пишите стили для маленьких экранов, а затем расширяйте для больших через min-width). Так код чище!

/* Mobile-first подход */  
body {
  font-size: 14px; 
}

@media (min-width: 768px) {
  body {
    font-size: 16px; /* Только на экранах ≥ 768px */
  }
}

Практика: Адаптивное меню

Допустим, на десктопе меню горизонтальное, а на телефоне — вертикальное с кнопкой «бургер».

HTML:

<nav class="navbar">
  <button class="menu-toggle"></button>
  <ul class="menu">
    <li><a href="#">Главная</a></li>
    <li><a href="#">О нас</a></li>
  </ul>
</nav>

CSS (упрощённый пример):

.menu-toggle {
  display: none; /* Скрыто на десктопе */
}

@media (max-width: 600px) {
  .menu-toggle {
    display: block; /* Показываем на телефонах */
  }
  .menu {
    display: none; /* Меню скрыто по умолчанию */
  }
  .menu.active {
    display: block; /* Открыто при клике */
  }
}

🔥 Для бургер-меню понадобится JS (но это уже тема другого урока).


Проверяем на реальных устройствах

1. DevTools в браузере (Chrome/Firefox):

  • Откройте панель разработчика (F12).
  • Кликните на иконку телефона/планшета.
  • Тестируйте разные разрешения.

2. Настоящие устройства:

  • Откройте сайт на телефоне, планшете, ноутбуке.
  • Проверьте, нет ли горизонтального скролла.

Итоги

  • <meta viewport> — фундамент адаптивности.
  • Media queries — гибкие условия для стилей.
  • Mobile-first — пишите CSS от меньшего к большему.
  • Тестируйте на разных экранах!

Теперь ваш сайт будет идеально выглядеть и на огромном мониторе, и в маленьком телефоне! 🎉

Скрыть рекламу навсегда

🌱 Индвидидулаьные занятия

Индивидуальные онлайн-занятия по программированию для детей и подростков

Личный подход, без воды, с фокусом на понимание и реальные проекты.

🚀 Записаться на занятие