← Назад к вопросам

Как максимально просто создать адаптивность под мобильное устройство?

1.6 Junior🔥 201 комментариев
#HTML и CSS

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI2 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Как просто создать адаптивность под мобильные устройства

Адаптивный дизайн (Responsive Design) — это способность сайта хорошо выглядеть на экранах любого размера. Рассмотрим самый простой и эффективный подход к реализации.

1. Viewport Meta Tag (ОБЯЗАТЕЛЬНО)

Первое и самое важное — добавить правильный meta тег:

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

Это сообщает браузеру:

  • width=device-width — ширина равна ширине устройства (не фиксированная 980px)
  • initial-scale=1.0 — масштаб 100% без зума

БЕЗ этого тега — мобильный браузер масштабирует страницу, и ничего не будет работать.

2. Mobile-First подход

Напишите CSS сначала для мобильной версии, потом добавляйте для больших экранов:

/* МОБИЛЬНАЯ ВЕРСИЯ (< 640px) */
.container {
  width: 100%;           /* Полная ширина */
  padding: 16px;         /* Маленькие отступы */
  font-size: 14px;       /* Маленький шрифт */
}

.card {
  margin-bottom: 16px;   /* Стопкой */
}

/* ПЛАНШЕТ (640px и выше) */
@media (min-width: 640px) {
  .container {
    padding: 24px;
  }
  
  .card {
    margin-bottom: 24px;
  }
}

/* ДЕСКТОП (1024px и выше) */
@media (min-width: 1024px) {
  .container {
    max-width: 1200px;    /* Максимальная ширина */
    margin: 0 auto;       /* Центрирование */
  }
}

3. Гибкие размеры (Flexible Layout)

Используйте относительные единицы вместо абсолютных:

/* ❌ ПЛОХО — жесткие пиксели */
.button {
  width: 200px;          /* Если экран 320px, кнопка не влезет */
  height: 50px;
}

/* ✅ ХОРОШО — процент и rem */
.button {
  width: 100%;           /* Занимает всю ширину контейнера */
  max-width: 200px;      /* Но не больше 200px */
  padding: 12px 16px;    /* rem для масштабирования */
}

4. Flexbox для простого макета

Flexbox (гибкий макет) — самый простой способ сделать адаптивность:

/* Горизонтальный макет на десктопе, вертикальный на мобильном */
.header {
  display: flex;
  flex-wrap: wrap;       /* Переносит элементы на новую строку */
  gap: 16px;             /* Расстояние между элементами */
}

.header-item {
  flex: 1;               /* Равномерное распределение ширины */
  min-width: 200px;      /* Минимальная ширина перед переносом */
}

/* На мобильном: каждый элемент займет полную ширину */
@media (max-width: 640px) {
  .header-item {
    flex: 1 1 100%;      /* 100% ширина */
  }
}

5. Grid для сложного макета

CSS Grid — мощный инструмент для адаптивных сеток:

/* Автоматическая адаптация количества колонок */
.gallery {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: 16px;
}

/* На мобильном (320px): 1 колонка (320 - 16*2 = 288px) */
/* На таблетке (768px): 2-3 колонки */
/* На десктопе (1200px): 4-5 колонок */
/* Всё автоматически! */

6. Практический пример: Карточка товара

<div class="product-card">
  <img src="product.jpg" alt="Product" class="product-image">
  <div class="product-info">
    <h3 class="product-title">Product Name</h3>
    <p class="product-price">$99.99</p>
    <button class="product-button">Buy</button>
  </div>
</div>
/* Мобильная версия */
.product-card {
  display: flex;
  flex-direction: column;  /* Картинка сверху, текст снизу */
  gap: 12px;
  padding: 12px;
}

.product-image {
  width: 100%;
  aspect-ratio: 1;        /* Квадратная картинка */
  object-fit: cover;
}

.product-title {
  font-size: 16px;
  margin: 0;
}

.product-price {
  font-size: 18px;
  font-weight: bold;
  margin: 8px 0;
}

.product-button {
  width: 100%;
  padding: 12px;
  font-size: 14px;
}

/* Десктопная версия */
@media (min-width: 768px) {
  .product-card {
    flex-direction: row;   /* Картинка слева, текст справа */
    gap: 20px;
    padding: 20px;
  }
  
  .product-image {
    width: 300px;
    flex-shrink: 0;        /* Не сжимается */
  }
  
  .product-title {
    font-size: 20px;
  }
  
  .product-price {
    font-size: 24px;
  }
  
  .product-button {
    width: auto;
  }
}

7. Адаптивные изображения

Делайте изображения, которые адаптируются к размеру экрана:

<!-- ПЛОХО: одно изображение для всех размеров -->
<img src="large-image-5mb.jpg" alt="Image">

<!-- ХОРОШО: несколько версий для разных размеров -->
<picture>
  <!-- Мобильный (320px) -->
  <source srcset="image-320.jpg" media="(max-width: 640px)">
  <!-- Таблет (768px) -->
  <source srcset="image-768.jpg" media="(max-width: 1024px)">
  <!-- Десктоп -->
  <img src="image-1200.jpg" alt="Image">
</picture>

<!-- ИЛИ с Next.js Image (автоматическая оптимизация) -->
<Image src="/image.jpg" width={1200} height={800} alt="Image" />

8. Tailwind CSS для быстрой адаптивности

Если используете Tailwind, адаптивность становится совсем простой:

<!-- Мобильный: 1 колонка, на планшете: 2, на десктопе: 3 -->
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
  <div class="bg-white p-4 rounded-lg">Card 1</div>
  <div class="bg-white p-4 rounded-lg">Card 2</div>
  <div class="bg-white p-4 rounded-lg">Card 3</div>
</div>

<!-- Размер шрифта адаптируется -->
<h1 class="text-2xl md:text-3xl lg:text-4xl font-bold">
  Responsive Title
</h1>

<!-- Скрыть на мобильном, показать на десктопе -->
<nav class="hidden lg:block">
  <!-- Desktop navigation -->
</nav>

<!-- Показать на мобильном, скрыть на десктопе -->
<button class="lg:hidden">
  <!-- Mobile menu button -->
</button>

9. Контрольный список адаптивности

✓ Meta viewport тег добавлен
✓ Мобильный дизайн сначала (mobile-first)
✓ Используется flexbox/grid
✓ Относительные размеры (%, rem, em)
✓ Media queries для разных размеров экрана
✓ Тестирование на реальных устройствах
✓ Проверка на таблете (768px) и десктопе (1024px+)
✓ Изображения оптимизированы
✓ Шрифты читаемы на всех размерах
✓ Кнопки/input достаточно большие для тача (48x48px минимум)

Типичные breakpoints (точки перелома)

/* Стандартные размеры экранов */

/* Мобильный: 320px - 639px */
/* (телефоны: iPhone SE (375px), iPhone 12 (390px), etc) */

/* Таблет: 640px - 1023px */
@media (min-width: 640px) { ... }
/* (iPad (768px), Samsung Tab (800px), etc) */

/* Десктоп: 1024px - 1279px */
@media (min-width: 1024px) { ... }
/* (MacBook Air (1440px), Desktop (1920px), etc) */

/* Большой десктоп: 1280px+ */
@media (min-width: 1280px) { ... }
/* (4K мониторы (3840px), etc) */

Итог

Для быстрой адаптивности: 1) добавьте viewport meta тег, 2) пишите CSS мобильным-первым, 3) используйте flexbox/grid, 4) применяйте относительные размеры и 5) добавляйте media queries для больших экранов. Это базовый фундамент, на котором строится 90% адаптивных сайтов. Для продвинутых случаев добавьте оптимизацию изображений и учтите размеры тача.

Как максимально просто создать адаптивность под мобильное устройство? | PrepBro