Поскольку я хочу реализовать анимацию, когда каждый div появляется на экране, я использую API IntersectionObserver, чтобы узнать, когда они находятся в области просмотра.
Моя идея - создать наблюдателя для каждого div следующим образом
this.box.forEach(name => {
let isVis = false;
handleEachCategory(name, isVis);
})
Мои данные содержат имя CSS div, и до сих пор мне удается создать отдельных наблюдателей для каждого, но только один из div вызывает изменение Значение isVis (определяет, когда мой div полностью виден.
function handleEachCategory(category, isVis) {
let target;
let observer;
window.addEventListener("load", (event) => {
target = document.querySelector(category);
createObserver();
}, false);
function createObserver() {
let options = {
root: null,
rootMargin: '0px',
threshold: 1.0
}
observer = new IntersectionObserver(handleIntersect, options);
observer.observe(target)
}
function handleIntersect(entries, observer) {
entries.forEach(entry => {
if (entry.intersectionRatio === 1)
setAsVisible();
});
}
function setAsVisible() {
isVis = true;
console.log(isVis)
}
}
Я, как вы можете догадаться, совершенно новичок в javascript, и мой лог c, вероятно, где-то не работает, я просто не могу понять, как сделать пока это работает.
Еще один способ сформулировать мой вопрос - «как реализовать несколько наблюдателей пересечения», если есть более стандартный / предпочтительный способ, я бы хотел узнать об этом.