Не работает анимация при прокрутке

У меня страница со Snap прокруткой. Нужно, чтобы анимация на втором слайде воспроизводилась при перемещении на него скролла, а не запускалась сразу. Смысл в том, что я использую скрипт, который при прокрутке добавляет класс ._active к тегам, которые должны анимироваться. Однако, в итоге он работает только если я:

1). Перемещусь на 2 слайд. 2). Обновлю страницу.

Вот код скрипта, скажите, где неправильно? Как сделать, чтобы работало? Ошибок как таковых консоль не выдает.

const animItems = document.querySelectorAll('.app__about__animation');

if (animItems.length > 0) {
    window.addEventListener('scroll', animOnScroll);
    function animOnScroll() {
    for (let index = 0; index < animItems.length; index++) {
            const animItem = animItems[index];
            const animItemHeight = animItem.offsetHeight;
            const animItemOffset = offset(animItem).top;
            const animStart = 4;

            let animItemPoint = window.innerHeight - animItemHeight / animStart;
            if (animItemHeight > window.innerHeight) {

                animItemPoint = item.innerHeight - window.innerHeight / animStart;

            }

            if ((scrollY >= animItemOffset - animItemPoint) && scrollY <= (animItemOffset + animItemHeight)) {

                animItem.classList.add('_active');
                
            } else {

                animItem.classList.remove('_active');

            }
        }
    }

function offset(el) {

    const rect = el.getBoundingClientRect(),

        scrollLeft = window.pageXOffset || document.documentElement.scrollLeft,
        scrollTop = window.pageYOffset || document.documentElement.scrollTop;

    return { top: rect.top + scrollTop, left: rect.left + scrollLeft }

    }

    setTimeout(() => {

        animOnScroll();

    }, 100);

}

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