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

131
Visualizações
Recorriendo cada enlace en una barra de navegación usando IntersectionObeserver

Entonces, en mi sitio web personal, arreglé esta barra lateral mientras me desplazaba por toda la página, contiene íconos de Fontawesome y tiene enlaces incrustados. Quiero cambiar el color de estos 4 íconos del color predeterminado de blanco que usa una clase de imp__link--anchor al ingresar a una sección con fondo blanco a un color que he especificado usando class dark-theme en CSS. Intenté usar IntersectionObeserver en JavaScript pero solo funciona en el primer ícono y mi objetivo es repetir el mismo proceso en los 4 íconos ya que no puedo usar querySelectorAll.

Tengo 2 secciones con fondo blanco, así que quiero que cambien los colores de ambas secciones, ya que solo cambio en la primera sección.

Aquí está el HTML para la lista de iconos.

 <ul class="imp__link--list"> <li class="imp__link--wrapper"> <a href="https://www.linkedin.com/in/hatem-soliman-097872187/" target="_blank"> <i class="fab fa-linkedin-in imp__link--anchor"></i> </a> </li> <li class="imp__link--wrapper"> <a href="https://github.com/CodeNKoffee" target="_blank"> <i class="fab fa-github imp__link--anchor"></i> </a> </li> <li class="imp__link--wrapper"> <a href="https://www.behance.net/hatemsolifuse" target="_blank"> <i class="fab fa-behance imp__link--anchor"></i> </a> </li> <li class="imp__link--wrapper"> <a href="" target="_blank"> <i class="fas fa-file-pdf imp__link--anchor"></i> </a> </li> </ul>

Aquí está la parte CSS de los íconos.

 .dark-theme { color: var(--celestial-black); border: 2px solid #1d1d1d; border-radius: 50%; padding: 8px; transition: all 300ms ease; } .imp__link--anchor { border: 2px solid #fff; border-radius: 50%; padding: 8px; transition: all 300ms ease; }

Aquí está la parte de JavaScript

 const link = document.querySelector('.imp__link--anchor'); const sections = document.querySelector('.white-sections'); const linkObserverCallback = (watchEntry, linkObserver) => { if(!watchEntry[0].isIntersecting) { link.classList.remove('dark-theme'); link.classList.add('imp__link--anchor') } else { link.classList.remove('imp__link--anchor'); link.classList.add('dark-theme'); } } const linkObserverOptions = { rootMargin: '-110px', threshold: 0 } const linkObserver = new IntersectionObserver(linkObserverCallback, linkObserverOptions); linkObserver.observe(sections);
about 4 years ago · Juan Pablo Isaza
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