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

200
Visualizações
agregar clase al elemento en la ventana gráfica

Tengo cinco secciones en mi página y estoy tratando de agregar la clase "activa" a la sección en el puerto de visualización. Probé este código pero no funciona correctamente. el código guarda todos los elementos con el nombre de etiqueta "sección" en una lista de nodos y luego creó una matriz de esta lista, recorrí la matriz y agregué un detector de eventos para cada elemento, luego probé si el elemento está en la ventana gráfica, así que yo agregue la clase, de lo contrario, elimino la clase. el problema es que una vez que se desplaza la página, las cinco secciones tendrán la clase "activa", lo que significa que varios elementos tienen la clase "activa" al mismo tiempo, aunque solo se ve una sección en el puerto y cuando sigo desplazándome hacia abajo, las secciones que se mueven hacia arriba fuera de la ventana gráfica tienen su clase "activa" eliminada. ¿Cómo puedo tener un elemento con la imagen de código "activa" de clase a la vez?

 //values of viewport const viewWidth = document.documentElement.clientWidth; const viewHeight = document.documentElement.clientHeight; //set class active to section in viewport function sectionInView(x) { for (let i = 0; i in x; i++) { document.addEventListener("scroll", function () { let el = x[i].getBoundingClientRect(); if (el.top >= 0 && el.left >= 0 && el.bottom <= viewHeight && el.right <= viewWidth) { x[i].setAttribute("class", "active your-active-class"); } else { x[i].removeAttribute("class", "active your-active-class"); } }); } } sectionInView(sectionListArray);
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

 let sectionListArray = document.querySelectorAll('section') const viewHeight = document.documentElement.clientHeight window.onscroll = (() => { sectionListArray.forEach(function(v) { let rect = v.getBoundingClientRect(); let y = rect.y; let bottom = rect.bottom; let height = rect.height; if (y > viewHeight|| bottom+height < viewHeight ) { v.classList.add('active') } else { v.classList.remove('active') } }) })
 section { height: 300px; background: red; margin-bottom: 10px; transition: 1s; opacity:1 } .active{ opacity:0 }
 <section></section> <section></section> <section></section> <section></section> <section></section> <section></section> <section></section> <section></section> <section></section>

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