Foros del Web » Programando para Internet » Javascript »

Hacer que el menú se quede arriba al llegar a un tope

Estas en el tema de Hacer que el menú se quede arriba al llegar a un tope en el foro de Javascript en Foros del Web. Hola, Supongo que ya sabréis a lo que me refiero y si no me confundo esto se tiene que hacer con javascript. En páginas como ...
  #1 (permalink)  
Antiguo 11/12/2011, 10:36
Avatar de IMAC/  
Fecha de Ingreso: octubre-2005
Mensajes: 738
Antigüedad: 18 años, 6 meses
Puntos: 14
Hacer que el menú se quede arriba al llegar a un tope

Hola,

Supongo que ya sabréis a lo que me refiero y si no me confundo esto se tiene que hacer con javascript.

En páginas como series.ly y en algunas otras, el menú está en la parte superior de la página (aunque no arriba del todo) y cuando haces scroll para bajar la página se mueve con normalidad hasta que choca con el tope de la página.
Es entonces cuando se queda arriba como si fuera un div absoluto, pegado al tope de la página.

¿Sabéis como podria hacer eso?
Algún link, tutorial o algo?

Un saludo y gracias.
  #2 (permalink)  
Antiguo 11/12/2011, 13:45
 
Fecha de Ingreso: diciembre-2011
Mensajes: 35
Antigüedad: 12 años, 4 meses
Puntos: 9
Respuesta: Hacer que el menú se quede arriba al llegar a un tope

en realidad eso se hase con css agregandole al elemento
Código CSS:
Ver original
  1. position: fixed
  #3 (permalink)  
Antiguo 11/12/2011, 15:32
Avatar de IMAC/  
Fecha de Ingreso: octubre-2005
Mensajes: 738
Antigüedad: 18 años, 6 meses
Puntos: 14
Respuesta: Hacer que el menú se quede arriba al llegar a un tope

No, no me has entendido bien.
No está arriba constantemente, sino solamente cuando va a desaparecer de la pantalla por el el scroll.

Ya lo he conseguido hacer y es algo así:
Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.  
  3. var showStaticMenuBar = false;
  4.  
  5. $(window).scroll(function() {
  6.     if(showStaticMenuBar == false){
  7.         if($(window).scrollTop() >= 75){
  8.             document.getElementById("staticHeader").style.display = "block";
  9.             document.getElementById("headerMenu").style.display = "none";
  10.             showStaticMenuBar=true;
  11.         }
  12.     }else{
  13.         if($(window).scrollTop() <= 75){
  14.            
  15.             document.getElementById("staticHeader").style.display = "none";
  16.             document.getElementById("headerMenu").style.display = "block";
  17.             showStaticMenuBar=false;
  18.         }  
  19.     }
  20. }
  21.  
  22. );
  23. </script>

Donde el "headerMenu" es el menú normal y el "staticHeader" es el menú estático que está ahí pero sólamente se hace visible cuando llega el tope de la página.

Un saludo.
  #4 (permalink)  
Antiguo 22/12/2011, 21:37
 
Fecha de Ingreso: diciembre-2011
Ubicación: Caracas
Mensajes: 1
Antigüedad: 12 años, 4 meses
Puntos: 0
Pregunta Respuesta: Hacer que el menú se quede arriba al llegar a un tope

Cita:
Iniciado por IMAC/ Ver Mensaje
No, no me has entendido bien.
No está arriba constantemente, sino solamente cuando va a desaparecer de la pantalla por el el scroll.

Ya lo he conseguido hacer y es algo así:
Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.  
  3. var showStaticMenuBar = false;
  4.  
  5. $(window).scroll(function() {
  6.     if(showStaticMenuBar == false){
  7.         if($(window).scrollTop() >= 75){
  8.             document.getElementById("staticHeader").style.display = "block";
  9.             document.getElementById("headerMenu").style.display = "none";
  10.             showStaticMenuBar=true;
  11.         }
  12.     }else{
  13.         if($(window).scrollTop() <= 75){
  14.            
  15.             document.getElementById("staticHeader").style.display = "none";
  16.             document.getElementById("headerMenu").style.display = "block";
  17.             showStaticMenuBar=false;
  18.         }  
  19.     }
  20. }
  21.  
  22. );
  23. </script>

Donde el "headerMenu" es el menú normal y el "staticHeader" es el menú estático que está ahí pero sólamente se hace visible cuando llega el tope de la página.

Un saludo.

Hola IMAC queria preuntarte como hago para tener este efecto en la barra menu de mi Blog ----> http://anatomiamaxima.blogspot.com

La verdad podría parecerte sencillo, pero es que soy newfull user en estos temas que me gustan mucho.

Vale, muchas gracias de antemano.
  #5 (permalink)  
Antiguo 23/12/2011, 05:09
Avatar de IMAC/  
Fecha de Ingreso: octubre-2005
Mensajes: 738
Antigüedad: 18 años, 6 meses
Puntos: 14
Respuesta: Hacer que el menú se quede arriba al llegar a un tope

En el fondo se trata de 2 menús.
Uno estático en la parte superior de la página y oculto que posteriormente se activará con javascript pasado ciertos pixels con el scroll.

Y otro que estará en la parte de arriba de forma normal y que desaparecerá cuando se baje el scroll.

Esto da la sensación de que es uno solo pero en el fondo son 2, uno desaparece y otro aparece.

En el código que puse uno tiene el id staticHeader y otro el id headerMenu.

Con css haces que el estático esté fijado en la parte superior de la página y con style.display = "none"

El normal, el headerMenu con el estilo que tengas ahora.

No puedo explicarte mucho más porque dependerá de cómo tengas el menú en tu página y de los estilos que se le estén aplicando.

Un saludo y suerte.
  #6 (permalink)  
Antiguo 08/08/2012, 18:51
 
Fecha de Ingreso: junio-2012
Ubicación: Venezuela
Mensajes: 68
Antigüedad: 11 años, 10 meses
Puntos: 6
Respuesta: Hacer que el menú se quede arriba al llegar a un tope

Eso no es para nada robusto, porque fijate y si ese menú es un div, por ejemplo un div que contiene un carrito de compras?,, que maneja datos de una base de datos y se modifica dependiendo de lo que el usuario decida seleccionar?,, no puedo simplemente usar otro menu,, porque tendría que pasar esas variables que estan en el menu uno al menu 2,,, esto no es una buena solución.

Etiquetas: arriba, quede
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 13:46.