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

138
Visualizações
Su propia implementación de código pegajoso -estilo de transición

Por qué animar: la animación no está ligada específicamente al comportamiento, sino a un bloque. Por lo tanto, podemos cambiar el estilo sin problemas cuando el bloque llega a un lugar determinado.

Qué necesitas: Durante dos días, en el turno de la tarde, traté de escribir el código exactamente de tal manera que fuera lo más parecido posible a pegajoso, pero todo se rompe con la transición.

___Mi código JavaScript ahora tiene este comportamiento.

 //This code is not working correctly const navigation = document.querySelector('.menu'); const { offsetTop } = navigation; window.addEventListener('scroll', () => { const recY = navigation.getBoundingClientRect().y; const positionHtml = (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop; if (recY < 1) { navigation.style.top = positionHtml; } else if (positionHtml > offsetTop) { navigation.style.top = offsetTop; } });

Antes de eso, estaba agregando una clase o eliminándola, pero esto reveló un gran problema relacionado con css.

 const navigation = document.querySelector('.menu'); const getMatrix = (selector, lastIndex) => { const transform = window .getComputedStyle(selector, null) .getPropertyValue('transform'); const dataTransform = transform.match(/-?\d+\.?\d+|\d+/g); return +dataTransform[dataTransform.length - lastIndex]; }; const { offsetTop } = navigation; const savaPos = getMatrix(navigation, 1); window.addEventListener( 'scroll', () => { const doc = (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop; if (navigation.classList.contains('s') && doc >= savaPos) return; else if (doc >= offsetTop && doc >= savaPos) { navigation.classList.add('s'); } else if (doc <= savaPos) { navigation.classList.remove('s'); } }, { passive: true } );

CSS

 .s { position: fixed; transform: translateY(0); width: 100%; height: auto; } .menu { display: flex; transform: translateY(100px); width: 100%; padding: 15px; background-color: #14151a; /* transition: transform 0.1s; */ }

Este código funciona tan bien como Sticky, pero no puede aplicar animación.


El caso es que cuando cambio de una posición a otra, por ejemplo de estática a fija, obtengo un comportamiento incorrecto.

Ahora quiero intentar dejar el código antiguo y limpiar o dar transición por separado, esperando un tiempo en ms, después de agregar o eliminar la clase.

DPK

 /* transition: all 1.1s; */
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