Задать вопрос
@Dmax99

Как добавить класс элементу когда другой скрылся вверху?

Здравствуйте! Есть рабочий вариант скрипта, но он работает наоборот.
Он меняет классы когда элемент появляется внизу.
Мне же нужно менять классы только когда элемент с id или class пропадает с зоны видимости именно вверху. А не внизу как сейчас. Чтобы подправить самостоятельно, знаний уже не хватает...

Вот сам скрипт
$(window).scroll(function(){
  var top = $('#button').offset().top,
      sctop = $(this).scrollTop(),
      winh = $(this).height(),
      y = top - sctop - winh;
  if (y < 0 || -y > winh) {
    document.querySelector('#panel').classList.remove("d-hide");
	document.querySelector('#panel').classList.add("d-show");
  }
  else {
	document.querySelector('#panel').classList.remove("d-show");
	document.querySelector('#panel').classList.add("d-hide");
  }
});
  • Вопрос задан
  • 84 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    JavaScript
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик расширенный
    13 месяцев
    Далее
  • Академия Eduson
    Fullstack-разработчик на JavaScript
    11 месяцев
    Далее
Решения вопроса 1
XanXanXan
@XanXanXan
const panel = document.querySelector("#panel");
const button = document.querySelector("#button");

const buttonObserverCallback = (entries) => {
  entries.forEach(entry => {
    const isButtonAbove = entry.boundingClientRect.bottom < 0;
    panel.classList.toggle("d-hide", isButtonAbove);
  });
};

const intersectionObserver = new IntersectionObserver(buttonObserverCallback, {  threshold: 0 });
intersectionObserver.observe(button);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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