vasily_konnov
@vasily_konnov
Frontend developer

Как правильно отслеживать scroll вниз и в верх, js 6?

Как правильно отследить скролл вниз и вверх? Для липкого меню при скролле вниз хочу добавить класс и скрывать его, а при скролле вверх удалять этот класс и снова получается показывать липкое меню.

Я делаю так
// hide stick menu
let body = document.querySelector('body');

body.addEventListener('scroll', () => { 
    let scrollTop = body.scrollHeight;
    console.log(scrollTop);
});

let headerWrapper = document.querySelector('.header-wrapper');
console.log(headerWrapper);

if(scrollTop >= 100){
    headerWrapper.classList.add('hide');
}else{    
    headerWrapper.classList.remove('hide');
}


но где то ошибаюсь, это не работает
  • Вопрос задан
  • 10204 просмотра
Решения вопроса 1
bootd
@bootd
Гугли и ты откроешь врата знаний!
В вашем коде
let scrollTop = body.scrollHeight;
имеет область видимости внутри обработчика события и за его пределами такой переменной нет.
Делайте так:
body.addEventListener('scroll', () => { 
    let scrollTop = body.scrollHeight;
    console.log(scrollTop);

let headerWrapper = document.querySelector('.header-wrapper');
console.log(headerWrapper);

if(scrollTop >= 100){
    headerWrapper.classList.add('hide');
}else{    
    headerWrapper.classList.remove('hide');
}
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
Запомнить scrollTop
Сравнить текущий с предыдущим

Или mousewheel, если не для мобилок.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы