class Header { constructor() { if (!this.setVars()) return this.setEvents() } setVars() { this.element = document.querySelector('.header') this.scrollPosition = getCurrentScroll(); if (!this.element) return this.classes = { notify : 'header__notify--active', sticky : 'header--sticky' } return true } setEvents() { document.addEventListener('click', (e) => { this.closeAll() }) window.addEventListener('load', () => { this.headerSticky() }) window.addEventListener('scroll', () => { this.headerSticky() }) } closeAll() { this.notifyWrapper.removeClass(this.classes.notify) } headerSticky() { console.log(getCurrentScroll() - this.scrollPosition) this.scrollPosition = getCurrentScroll(); if ((getCurrentScroll() - this.scrollPosition ) < 0) { this.element.addClass(this.classes.sticky) } else { this.element.removeClass(this.classes.sticky) } } }
W console.log pokazuje mi wynik, który w przypadku scrollowania w górę jest ujemny, a w dół dodatni. Na tej podstawie próbuję dodawać klasy. Niestety te klasy się nie dodają.
EDIT: ok zwróciłem uwagę brakuje ci classList ;) powinno być:
this.element.classList.add(this.classes.sticky)
-------------------------------------------------
Kod wygląda ok :) Może za szybko go uruchamiasz ?
Aby pobrać element poprzez document.querySelector('.header') powinieneś poczekać na event DOM ready lub load strony.
Spróbuj zrobić dla pewności małą zmiane w funkcji setVars.
if (!this.element) return
Zamień na
if (!this.element) throw new Error("Za szybko wykonałem kod musze to poprawić.")
93,383 zapytań
142,383 odpowiedzi
322,539 komentarzy
62,745 pasjonatów
Motyw:
Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡
Oto polecana książka warta uwagi.Pełną listę książek znajdziesz tutaj