Деактивация прокрутки в JavaScript с jQuery: scrollTo
Соберите ИИ-ассистента, который будет работать за вас
Мини-курс для новичков за749 ₽
Перейти
Деактивация прокрутки в JavaScript с jQuery: scrollTo
бесплатно
Как вести личный бюджет, чтобы начать копить
ИИ-помощник за0 ₽
Перейти
Деактивация прокрутки в JavaScript с jQuery: scrollTo
Освойте нейросети за один вечер
12 уроков за1249 ₽
Перейти
Деактивация прокрутки в JavaScript с jQuery: scrollTo
Создайте сайт за два дня без программирования
Обучитесь вайбкодингу за2499 ₽
Перейти
Деактивация прокрутки в JavaScript с jQuery: scrollTo
Улучшите резюме, чтобы быстрее найти работу
Секреты для поиска работы за990 ₽
Перейти

Деактивация прокрутки в JavaScript с jQuery: scrollTo

#Работа с DOM  #События в браузере  #jQuery  
Пройдите тест, узнайте какой профессии подходите
Сколько вам лет
0%
До 18
От 18 до 24
От 25 до 34
От 35 до 44
От 45 до 49
От 50 до 54
Больше 55

Быстрый ответ

Чтобы остановить прокрутку страницы, задайте свойство overflow: hidden элементу <body>:

JS
Скопировать код
document.body.style.overflow = 'hidden'; // "Сейчас прокрутка прервется!"
document.body.style.overflow = '';       // "Продолжаем прокрутку!"

Таким способом вы сможете отключить и восстановить прокрутку, не трогая при этом другие элементы навигации, например, комбинации клавиш или переходы по якорям.

Пошаговый план для смены профессии

Подробные инструкции

Управление прокруткой на мобильных устройствах

Для блокировки прокрутки на устройствах с сенсорным отображением, следует обрабатывать события touchmove:

JS
Скопировать код
const preventDefault = (e) => e.preventDefault();
const disableScroll = () => document.addEventListener('touchmove', preventDefault, { passive: false }); // "Никакой прокрутки!"
const enableScroll = () => document.removeEventListener('touchmove', preventDefault, { passive: false }); // "Продолжаем прокрутку!"

disableScroll();  // Прокрутка отключена
enableScroll();   // Прокрутка включена

Важно: установите { passive: false }, чтобы гарантировать отмену действия по умолчанию при касании.

Запоминание позиции прокрутки

Важно сохранить положение прокрутки при её переключении. Вот как это делается:

JS
Скопировать код
let scrollPosition = 0;

const disableScroll = () => {
  scrollPosition = window.pageYOffset; // Запоминаем текущую позицию!
  document.body.style.overflow = 'hidden';
  document.body.style.position = 'fixed'; // Фиксируем положение!
  document.body.style.top = `-${scrollPosition}px`; // Держим в уме позицию
};

const enableScroll = () => {
  document.body.style.overflow = '';
  document.body.style.position = '';
  document.body.style.top = '';
  window.scrollTo(0, scrollPosition); // Возвращаемся на сохраненную позицию!
};

Имитация полосы прокрутки

Чтобы интерфейс не смещался при исчезновении прокруточной полосы, создайте её подделку:

JS
Скопировать код
const scrollbarWidth = window.innerWidth – document.documentElement.clientWidth;
document.body.style.overflow = 'hidden';
document.body.style.paddingRight = `${scrollbarWidth}px`; // Создаем видимость полосы прокрутки

Продвинутые приёмы

Динамическое управление переполнением содержимого

Для динамического управления переполнением, например, во время анимаций или переходов, настройте следующий подход:

JS
Скопировать код
function afterAnimation() {
  document.body.style.overflow = 'auto'; // "Анимация закончена, можем продолжить!"
}

// Запускаем анимацию и восстанавливаем прокрутку в конце
myAnimation().then(afterAnimation);

Совместимость с устаревшими браузерами

В старых браузерах, таких как IE6, могут потребоваться особые методы управления прокруткой:

JS
Скопировать код
// Для IE6
window.onload = function() {
  document.body.scroll = "no"; // "В IE6 прокрутку мы отменяем!"
};

Обязательно тестируйте решения в разных браузерах и на разных устройствах, чтобы убедиться в их правильной работе.

Визуализация

Пошаговое иллюстрированное руководство по временному блокированию прокрутки:

Markdown
Скопировать код
Исходное состояние страницы: 📄🔄👈 (Прокрутка включена)

Действие: 🚫✋ (Стоп! Прекращаем прокрутку!)

Результат: 📄✋ (Прокрутка отключена)

Жаргонное сравнение: это как если бы у полосы прокрутки была кнопка паузы:

JS
Скопировать код
// Чтобы приостановить прокрутку:
document.body.style.overflow = 'hidden'; // 📄⏸️

// Чтобы продолжить прокрутку:
document.body.style.overflow = ''; // 📄⏯️

Дополнительные соображения

Избежание "цепной" прокрутки

При использовании вложенных элементов с прокруткой полезно применить CSS-свойство overscroll-behavior для предотвращения цепной прокрутки:

CSS
Скопировать код
.scrollable-element {
  overscroll-behavior: contain; // "Твое распространение останавливается здесь", – сообщает элемент прокрутке
}

Вопросы производительности

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

Полезные материалы

  1. Метод Event: preventDefault() – Веб API | MDN — Информация о блокировке стандартных событий в JavaScript.
  2. javascript – Как временно отключить прокрутку? – Stack Overflow — Обсуждение специалистов и сообщества по проблеме отключения прокрутки.
  3. overflow | CSS-Tricks – CSS-Tricks — Изучение свойства overflow и его сильного влияния на прокрутку.
  4. Вам может не понадобиться jQuery — Показаны альтернативы функциональности jQuery на чистом JavaScript.
  5. События касания – Веб API | MDN — Анализ проблем, возникающих при работе с событиями касания в веб-разработке.
  6. WheelEvent – Веб API | MDN — Документация, с помощью которой вы можете осмыслить интерфейс WheelEvent.
Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Как отключить прокрутку страницы в JavaScript?
1 / 5

Элина Баранова

разработчик Android

Свежие материалы

Загрузка...