Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

77
Visualizações
Varios Intersection Observers rastreando diferentes elementos fusionados en uno solo

Tengo un código simple que usa IntersectionObserver, que básicamente dice cuándo un objeto está visible en la pantalla, cuando eso sucede, quiero que un título cambie al mismo nombre de ese elemento visible. El caso es que he creado 5 variables diferentes para cada observador relacionadas con cada una de las 5 áreas próximas. ¿Hay alguna manera de simplificar este código?

En este momento funciona, pero me parece que está mal y no puedo encontrar la manera de fusionarlos a todos.

¡¡Gracias por adelantado!!

 var observer = new IntersectionObserver(function(entries) { if(entries[0].isIntersecting === true) document.querySelector(".productTitle").innerHTML = "Logotype"; }, { threshold: [1] }); var observer1 = new IntersectionObserver(function(entries) { if(entries[0].isIntersecting === true) document.querySelector(".productTitle").innerHTML = "Branding"; }, { threshold: [1] }); var observer2 = new IntersectionObserver(function(entries) { if(entries[0].isIntersecting === true) document.querySelector(".productTitle").innerHTML = "Website Dev."; }, { threshold: [1] }); var observer3 = new IntersectionObserver(function(entries) { if(entries[0].isIntersecting === true) document.querySelector(".productTitle").innerHTML = "3d Modeling"; }, { threshold: [1] }); var observer4 = new IntersectionObserver(function(entries) { if(entries[0].isIntersecting === true) document.querySelector(".productTitle").innerHTML = "Vectorial Work"; }, { threshold: [1] }); observer.observe(document.querySelector("#visibleLogo")); observer1.observe(document.querySelector("#visibleBranding")); observer2.observe(document.querySelector("#visibleWeb")); observer3.observe(document.querySelector("#visible3d")); observer4.observe(document.querySelector("#visibleVector"));

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

  • Asigne una clase común como .page a sus artículos Elementos
  • Solo necesita una instancia de IntersectionObserver y puede adjuntarla a todas las .page deseadas dentro de .forEach() .
  • Use el atributo data-* para almacenar el título deseado en el propio HTML como, por ejemplo: data-title="Title to show when in viewport"

 const elTitle = document.querySelector(".productTitle"); const pageInViewport = (entries, observer) => { entries.forEach(entry => { if (entry.isIntersecting) { elTitle.textContent = entry.target.dataset.title; } }); }; const pageObs = new IntersectionObserver(pageInViewport); const obsOptions = {threshold: [1]}; // Attach observer to every .page element: document.querySelectorAll('.page') .forEach(EL => pageObs.observe(EL, obsOptions));
 * { margin: 0; box-sizing: border-box; } .productTitle { position: fixed; top: 0; background: gold; } .page { padding: 30px; border: 1px solid #000; height: 100vh; }
 <div class="productTitle"></div> <div class="page" id="visibleLogo" data-title="Logotype">visibleLogo</div> <div class="page" id="visibleBranding" data-title="Branding">visibleBranding</div> <div class="page" id="visibleWeb" data-title="Website Dev.">visibleWeb</div> <div class="page" id="visible3d" data-title="3d Modeling">visible3d</div> <div class="page" id="visibleVector" data-title="Vectorial Work">visibleVector</div>

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda