Tengo este observador simple que agrega y elimina clases según entry.isIntersecting. Todo funciona bien, excepto cuando se cambia el tamaño del puerto de visualización a un tamaño particular (este tamaño está relacionado con el umbral) el observador va a la entrada de conmutación de bucle infinito. Soy consciente de por qué sucede esto y de que probablemente sea una solución fácil, pero simplemente no puedo encontrarla.
const stickyNavReveal = function(entries){ const [entry] = entries if(!entry.isIntersecting){ //add class for sticky navigation nav.classList.add('sticky'); toTop.classList.remove('hidden'); } else{ nav.classList.remove('sticky'); toTop.classList.add('hidden'); } } const headerObserver = new IntersectionObserver(stickyNavReveal, { root:null, rootMargin:'40px', threshold:[0.4] }) headerObserver.observe(header)