anov
@anov
Junior coder

Почему не всегда срабатывает Intersection Observer?

Добрый день.
Установил наблюдение за контейнером и установил отслеживание за двумя точками: более 0.2 - первая и более 0.7 - вторая. Первая точка(0.2) всегда срабатывает с первого раза, вторая(0.7) - не всегда(покрутишь туда-сюда и срабатывает).
Я не понимаю логику. Иной раз прокрутишь быстро и сработают обе точки, в другой раз крутишь медленно и вторая не отрабатывает с первого раза. В чем может быть проблема?

Скрипка на codepen

if (document.querySelector(".advantages")) {
    let advantages = document.querySelector(".advantages");
    
    const options = {threshold: [0.2, 0.7],}
    
    let callback = function(entries, observer) {
        
        if (entries[0].intersectionRatio > 0.2) {
            document.querySelector(".advantages__notice").classList.remove("advantages__notice--hidden");
        }
        
        if (entries[0].intersectionRatio > 0.7) {
            let target = entries[0].target;
            let children = Array.from(target.querySelectorAll(".advantages__item--hidden"));
            
            children.forEach(item => {
                item.style.transitionDelay = `${item.dataset.delay}`;
                item.classList.remove("advantages__item--hidden");
            });
            
            observer.unobserve(advantages);
        }
    }
    
    observer = new IntersectionObserver(callback, options);
    observer.observe(advantages);
}
  • Вопрос задан
  • 354 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

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