Как удалить добавленные классы при скролле?

У меня есть header шапка сайта котороя фиксирована.
При сколле страницы на 10px в низ добавляются классы к элементам.
Я не могу удалить классы когда страницу прокручиваю назад до самого верха.
По идее они долны пропадать.
Или это не так делается? Если допустим я прокурчу до самого низа и крутану на 10px в верх они наверное тогда удалятся я думаю, что ни есть хорошо.

function scroll() {
    let elem = document.querySelectorAll('a.navigation-link') // Несколько ссылок.

    if (pageYOffset = '10') {
        document.querySelector('.header').classList.add('header-on') // Добавляю класс к элементу.
        for (let i = 0; i < elem.length; i++) { // Добавляю классы к элементам.
            elem[i].classList.add('navigation-link-on')
        }
    }
    if (pageYOffset = '0') {
        document.querySelector('.header').classList.remove('header-on')
        for (let i = 0; i < elem.length; i++) {
            elem[i].classList.remove('navigation-link-on')
        }
    }
}

window.addEventListener('scroll', scroll)

Ответы (1 шт):

Автор решения: UserTest013

Никогда не используйте addEventListener на 'scroll' для контроля видимых областей. Для этого существует IntersectionObserver. Вот пример добавления/удаления класса когда блок "уходит" с области видимости хотя бы на 1 пиксель.

const test1 = document.querySelector('.test1');

const callback = (entries) => {
  const elem = entries.find((entry) => entry.isIntersecting);
  if (elem) {
    test1.classList.add('top');
  } else {
    test1.classList.remove('top');
  }
}

const observer = new IntersectionObserver(callback, {
  rootMargin: '0px',
  threshold: 1
});

observer.observe(test1);
* {
  margin: 0;
}

.test1 {
  height: 150px;
  background: #ff9393;
}

.test2 {
  height: 600px;
  background: #0f93ff;
}

.top {
  background: #ff3030;
}
<div class="test1"></div>
<div class="test2"></div>

→ Ссылка