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

223
Visualizações
Barra de navegación que se oculta cuando se desplaza hacia abajo y vuelve a aparecer cuando se desplaza hacia arriba

He explorado algunos enfoques para esto, pero ninguno parece funcionar exactamente como me gustaría:

  • Me gustaría que al desplazarse hacia abajo, la barra de navegación se mueva hacia arriba a la velocidad a la que el usuario se desplaza hacia abajo, como si estuviera estática en ese punto.
  • Cuando desaparezca, me gustaría que la parte inferior aún sea visible, porque aquí es donde tengo una barra de progreso (pero tal vez la barra de progreso debería separarse en ese punto y estar en la parte superior de la ventana gráfica).
  • Cuando se desplaza hacia arriba, me gustaría que la barra de navegación volviera a aparecer, nuevamente a la velocidad de desplazamiento, como si fuera estática, hasta que vea toda la barra de navegación, cuando debería adherirse a la parte superior de la ventana gráfica.

Aquí hay un ejemplo de comportamiento que me gustaría, pero no rendimiento/experiencia (debido a que el comportamiento se implementa mediante el evento de scroll , no es fluido).

También intenté usar la transformación CSS, que al desplazarse hacia abajo agregaría una clase para ocultar la barra de navegación, y al desplazarse hacia arriba eliminaría la clase, animando la barra de navegación ocultando/mostrando, pero el problema es que la velocidad de la animación está desconectada con la velocidad de desplazamiento .

También probé la posición fija de CSS, pero parece que necesito lo contrario de lo que proporciona.

¿Hay alguna otra manera de hacer que esto funcione bien?

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

0

Revisé su problema y creo que encontré un enfoque simple.

con esta sencilla función puede obtener la cantidad de píxeles que el usuario ha desplazado.

 window.onscroll = function (e) { console.log(window.scrollY); // Value of scroll Y in px };

después de que el usuario desplace la cantidad deseada de píxeles, haga que la barra de progreso sea fixed top (o position:fixed;top:0 )

about 4 years ago · Juan Pablo Isaza Relatório

0

Al verificar el enlace que proporcionó, parece funcionar como se esperaba ( desea que esté vinculado al evento de desplazamiento ya que desea que se mueva como "estático" ). Sin embargo, si se tambalea en algún sistema debido a eventos de desplazamiento inconsistentes, puede intentar agregar una propiedad de transition con una duración lo suficientemente pequeña. Tenga en cuenta que esto solo debe habilitarse mientras la propiedad de posición permanezca igual; de lo contrario, al cambiar de "absoluto" a "fijo" se estropearían las cosas, ya que el origen de coordenadas cambia.

Así que puedes agregar otra variable let changedPosition = false; y cada vez que cambie la propiedad de position , puede hacer

 if (position !== "absolute") { changedPosition = true; } else { changedPosition = false; } position = "absolute";

o

 if (position !== "fixed") { changedPosition = true; } else { changedPosition = false; } position = "fixed";

y cuando aplicas el estilo haz

 navbar.style = `position: ${position}; top: ${navbarTop}px; transitiona: ${ changedPosition ? "none" : "100ms linear" }`;

como https://codepen.io/gpetrioli/pen/XWVKxNG?editors=0010


Debería jugar un poco con las propiedades de transición que proporciona, solo pongo algunos valores de muestra allí.

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