scroll
— это событие и набор методов в JavaScript, с помощью которых можно управлять прокруткой веб-страницы или отдельного элемента. Работа со скроллом позволяет создавать эффекты, следить за положением страницы и реализовывать функции вроде “Кнопка наверх” или “Бесконечная прокрутка”.
Отслеживание события scroll
Событие scroll
срабатывает при каждом изменении положения прокрутки:
window.addEventListener('scroll', () => {
console.log('Страница прокручивается');
});
Если нужно следить за прокруткой конкретного элемента, событие вешается на него:
const container = document.getElementById('scrollable');
container.addEventListener('scroll', () => {
console.log('Контейнер прокручивается');
});
Получение текущей позиции прокрутки
Для всей страницы
Горизонтальная прокрутка:
const scrollX = window.scrollX; // или window.pageXOffset
Вертикальная прокрутка:
const scrollY = window.scrollY; // или window.pageYOffset
Для элемента
const element = document.getElementById('scrollable');
const scrollTop = element.scrollTop;
const scrollLeft = element.scrollLeft;
Прокрутка к определенной позиции
Прокрутка окна
window.scrollTo({
top: 500,
behavior: 'smooth' // плавная прокрутка
});
Прокрутка элемента
element.scrollTo({
top: 200,
behavior: 'smooth'
});
Прокрутка относительно текущей позиции
window.scrollBy({
top: 100,
behavior: 'smooth'
});
Прокрутка к элементу
Метод scrollIntoView
позволяет прокрутить страницу так, чтобы элемент оказался в видимой области:
const section = document.getElementById('section');
section.scrollIntoView({ behavior: 'smooth', block: 'start' });
Проверка, достигнут ли конец страницы
window.addEventListener('scroll', () => {
const scrolledToBottom = window.innerHeight + window.scrollY >= document.body.offsetHeight;
if (scrolledToBottom) {
console.log('Достигнут конец страницы');
}
});
Отключение прокрутки страницы
Иногда нужно полностью запретить прокрутку:
document.body.style.overflow = 'hidden';
Чтобы вернуть прокрутку обратно:
document.body.style.overflow = '';
Управление прокруткой в JavaScript — это важная часть создания современных веб-интерфейсов. Оно позволяет контролировать поведение страницы при загрузке, реализовывать эффектные анимации, улучшать пользовательский опыт при навигации и работать с ленивой загрузкой контента.