Блокируй прокрутку под модалкой!

вт, 10 июня 2025 г. - 2 мин чтения
Модальное окно, перекрывающее контент

🛑 Блокировка прокрутки под модальным окном — обязательна

Когда открывается модалка, пользователь фокусируется на одной задаче: подтвердить действие, заполнить форму, прочитать важное сообщение. Если в этот момент фон продолжает скроллиться, возникают путаница и микро-боли. После закрытия окна человек внезапно оказывается в другом месте страницы и теряет контекст.


10 причин блокировать прокрутку под модальным окном

  1. Сохранение позиции. Пользователь возвращается ровно туда, где открыл модалку, без прыжков по странице.
  2. Фокус на содержимом. Отсутствие движущегося фона помогает сосредоточиться на действии внутри модалки.
  3. Отсутствие «галлюцинаций». Скролл под прозрачными слоями создаёт ощущение, будто модалка «плавает» и висит криво.
  4. Стабильные жесты на мобайле. Блокировка предотвращает случайное прокручивание подложки при свайпе внутри модального контента.
  5. Корректные фокусы клавиатуры. Когда фон зафиксирован, Tab не уходит в невидимые элементы за модалкой.
  6. Лучшая доступность. Пользователи со скринридерами и клавиатурой не теряют фокус и понимают, что находятся в диалоге.
  7. Единый сценарий аналитики. Нет ложных событий «скролл» в момент, когда пользователь на самом деле работает с модалкой.
  8. Предсказуемость переходов. После подтверждения действия человек видит тот же контент, а не случайный блок ниже.
  9. Экономия ресурсов. Фиксированный фон избавляет от лишних перерисовок, особенно в тяжёлых списках или лентах.
  10. Профессиональный вид продукта. Интуитивное поведение модалок формирует ощущение качества и заботы.

Как реализовать блокировку

  • Добавляйте класс на body при открытии модалки (overflow: hidden;), не забывайте возвращать состояние.
  • Для мобайла используйте подход с фиксацией позиции (position: fixed; top: -scrollY;) и восстановлением скролла после закрытия.
  • Применяйте готовые хелперы (body-scroll-lock, react-remove-scroll), чтобы не ловить edge-case с тач-жестами.
  • Покрывайте сценарий автотестами: открыл модалку → зафиксировал позицию → закрыл → остался на месте.

Итог

Блокировка прокрутки — не мелочь, а норма UX-гигиены. Она сохраняет контекст пользователя, разгружает поддержку и поднимает доверие к продукту. Если в проекте ещё есть модалки без фиксации фона, исправьте их сегодня — пользователи заметят.