Чаще всего скролл пропадает из-за того, что на элементе <html> или <body> остался стиль overflow: hidden — его обычно ставят при открытии модального окна или мобильного меню, а после закрытия забывают убрать. Вторая по частоте причина — скрипт, который перехватывает события колеса мыши или касания (wheel, touchmove) и блокирует их через preventDefault().
Как найти причину
- Откройте инструменты разработчика (F12), выберите вкладку Elements и проверьте вычисленные стили (Computed) для <html> и <body> — ищите overflow: hidden или height: 100% с fixed-позиционированием.
- Посмотрите вкладку Console: ошибки в JS часто останавливают выполнение скриптов, которые должны были снять блокировку скролла.
- Временно отключите JavaScript в настройках браузера (или через расширение) и обновите страницу — если скролл появился, дело в скрипте, а не в CSS.
Частые причины отсутствия прокрутки
- Незакрытое модальное окно, попап или мобильное меню оставило класс с overflow:hidden на body.
- Плагин плавного скролла (smooth-scroll, парallax-библиотеки) конфликтует с версией jQuery или другим скриптом на странице.
- Полноэкранный оверлей с большим z-index перекрывает контент и «съедает» события мыши.
- На мобильных — свойство touch-action: none на родительском контейнере блокирует свайпы.
- Высота body задана как 100vh вместе с fixed-позиционированием — контент физически некуда скроллить.
Что делать, если сайт не ваш и вы просто читаете страницу
Попробуйте обновить страницу через Ctrl+F5 (сброс кэша), отключить расширения браузера — некоторые блокировщики рекламы ломают верстку и обработчики событий, — а также открыть страницу в другом браузере. Если проблема сохраняется только на конкретном устройстве, проверьте, не включён ли в системе режим уменьшения движения (reduce motion), который иногда некорректно обрабатывается кастомными скролл-скриптами.
Если это ваш сайт: быстрое исправление
- Удалите или закомментируйте overflow: hidden на html/body в CSS и проверьте JS-код, который добавляет этот стиль динамически при открытии попапов — добавьте туда же логику снятия стиля при закрытии.
- Найдите все обработчики wheel/touchmove через поиск по коду и убедитесь, что preventDefault вызывается только там, где действительно нужно (например, внутри кастомного слайдера), а не глобально на document.
- Проверьте порядок подключения библиотек — устаревшие плагины плавной прокрутки часто требуют конкретную версию jQuery и ломаются при обновлении.