Перенеси сайт с desktop-first на mobile-first.
Зачем
- 60-70% трафика — мобильный
- Mobile-first проще: вырезать сложное → потом достроить
- Лучше CSS performance
Шаги
1. Audit текущего
Открой сайт на 375px ширине. Запиши все проблемы:
- Горизонтальный скролл
- Перекрывающие элементы
- Нечитаемый текст
- Кнопки которые невозможно нажать
- Тяжёлые images / fonts
2. Refactor CSS подход
Было (desktop-first)
.card {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
}
@media (max-width: 768px) {
.card { grid-template-columns: 1fr; }
}
Стало (mobile-first)
.card {
display: grid;
grid-template-columns: 1fr;
}
@media (min-width: 768px) {
.card { grid-template-columns: 1fr 1fr 1fr; }
}
Дефолт = mobile. Добавление = upscale.
3. Tailwind подход
Tailwind по умолчанию mobile-first:
<!-- Default = mobile, добавляем upscale -->
<div class="grid grid-cols-1 md:grid-cols-3">
4. Layout-приоритеты
На мобильном:
- Вертикальный stack по умолчанию
- Скрыть второстепенное
- Сократить навигацию (hamburger)
- Большие touch-таргеты
- Текст крупнее (минимум 16px чтобы iOS не зумил инпуты)
На desktop:
- Восстановить grid / horizontal layout
- Sidebar возвращается
- Hover-эффекты
- Мелкий текст ок (≥ 14px)
5. Картинки
<img src="card.jpg"
srcset="card-480.jpg 480w,
card-960.jpg 960w,
card-1440.jpg 1440w"
sizes="(max-width: 768px) 100vw, 50vw"
loading="lazy">
Браузер сам выберет нужный размер.
6. Fonts
- font-display: swap (показывает fallback пока грузится)
- subset (только нужные glyphs)
- preload критичных шрифтов
7. Touch optimization
- Кнопки 44px+
- Padding между интерактивами
- Убрать hover-only функционал
-webkit-tap-highlight-color: transparentесли используешь свой- input
autocompleteатрибуты
8. Performance
Mobile часто на slow networks:
- LCP < 2.5s на 4G
- Изображения lazy
- Code splitting по роутам
- Минимум JS на main thread
9. Тестирование
- DevTools mobile emulator (быстро)
- Реальные устройства (важно)
- BrowserStack для разных моделей
- Lighthouse Mobile
Анти-паттерны
- ❌ Просто
zoom: 0.8для desktop layout на mobile - ❌
display: noneна важных кнопках - ❌ Текст 12px на mobile (слепнут)
- ❌ Inputs без
type="email"/type="tel"(не вылазит правильная клавиатура) - ❌ Тестирование только на DevTools
Финальный чек-лист
- Все breakpoints —
min-width, неmax-width - Картинки с srcset
- Touch targets ≥ 44px
- LCP < 2.5s на mobile
- Нет horizontal scroll
- Тексты читаемы без зума
- Inputs правильного type
Похожие промты
site / audit
Mobile-friendly аудит (375px)
Аудит мобильной версии на iPhone SE: тач-таргеты, скролл, попапы, tap-vs-hover, input zoom.
auditmobileux
Открыть
Средний30-60 мин
design / responsive
Стратегия брейкпойнтов
Не «3 устройства», а содержательные точки. Где менять layout и зачем.
responsivebreakpointslayout
Открыть
Начальный15-30 мин
design / responsive
Touch vs hover паттерны
Что работает с пальцем, что с курсором — и как сделать чтобы работало везде.
responsivetouchhover
Открыть
Начальный15-30 мин