const images = document.querySelectorAll('#anim'); let options = { root: document.querySelector('#scrollArea'), rootMargin: '0px', threshold: 1.0 } observer = new IntersectionObserver((entries)=>{ console.log(entries); entries.forEach(entry =>{ if(entry.intersectionRatio > 0){ var animname = entry.target.dataset.animname; console.log(animname); var animprop = animname + ' 1s'; entry.target.style.animation = animprop; }else{ entry.target.style.animation = 'none'; } }) },options); images.forEach(image => { observer.observe(image); })tan pronto como agregué "opciones" después de la devolución de llamada, ya no repitió la animación de los elementos. Sin embargo, registra que los elementos ya no se cruzan.