2011-02-05 32 views
12

Estoy jugando con algunos jquery tratando de entenderlo.cambiando la posición de un elemento css después de desplazarse hacia abajo en la página

Tengo un navegador ul que tiene una posición absoluta establecida pero después de desplazar la página hacia abajo en 200 píxeles, me gustaría que cambie a la posición fija para que el navegador siempre permanezca en la página.

¿Cómo podría hacer esto?

a continuación es el ejemplo que estoy trabajando en

http://satbulsara.com/tests/

+0

¿por qué no utilizar de forma predeterminada la 'posición: fija'? – Sotiris

+0

Establezca la posición en "fijo" en lugar de "absoluto". – Neil

+0

está bien, pero me gustaría que el navegador se desplace hasta un punto y luego cambie a fijo, ¿cómo puedo obtener jquery para hacer eso? – sat

Respuesta

13

Gracias a todos por ser tan rápido para ayudar

esto es lo que quería

$(document).ready(function() { 
    var theLoc = $('ul').position().top; 
    $(window).scroll(function() { 
     if(theLoc >= $(window).scrollTop()) { 
      if($('ul').hasClass('fixed')) { 
       $('ul').removeClass('fixed'); 
      } 
     } else { 
      if(!$('ul').hasClass('fixed')) { 
       $('ul').addClass('fixed'); 
      } 
     } 
    }); 
}); 

lo tengo desde

http://www.defringe.com/

http://satbulsara.com/tests/

Thankss !! !!!

2

Aquí está el código que utilizo para crear una barra lateral "pegajosa". Tendrá que modificar los ID para que se adapten a su marcado.

 
var sidebarScrollTop = 0; 

$(document).ready(function() { 
    sidebarScrollTop = $("#sidebar").offset(); 

    $(window).scroll(function() { 
     var docScrollTop = $('body,html').scrollTop(); 

     if(docScrollTop > sidebarScrollTop.top) { 
      $("#sidebar").css({ position: 'fixed', top: '0px' }); 
     } else { 
      $("#sidebar").css({ position: 'static' }); 
     } 
    }); 
}); 

$(window).resize(function() { 
    sidebarScrollTop = $("#sidebar").offset().top; 
}); 

$(document).resize(function() { 
    sidebarScrollTop = $("#sidebar").offset().top; 
}); 

Básicamente, todo lo que necesita hacer es cambiar el #sidebar para el ID del contenedor barra lateral. Este código verá si el elemento de la barra lateral se desplaza más allá de la parte superior de la pantalla. Si es así, cambia su posición a fixed, y cuando vuelve a estar en la página otra vez, la posición vuelve a static (predeterminado).

Las funciones $(document).resize() y $(window).resize() se asegurarán de que la barra lateral permanezca pegada en la parte superior de la página cuando el documento/ventana cambie de tamaño respectivamente. La función de documento asegurará que la barra lateral funcione correctamente incluso si tiene animaciones jQuery que cambian el tamaño de los elementos.

+0

Gracias, James, eso es casi lo que estoy buscando, me gustaría poder desplazar el navegador un poco y luego pegarlo + éste parece parpadear cuando me desplazo hacia arriba y hacia abajo – sat

+0

gracias a James por señalarme hacia la derecha pero esto es lo que estaba buscando exactamente – sat

+0

@sat - Lo uso en un sitio que estoy desarrollando y funciona bien. Si parpadea, quizás intente colocar la barra lateral dentro de un contenedor 'div '. – Bojangles

4

Escribí this jQuery plugin para hacer precisamente eso.

+0

¡Aseado! Definitivamente voy a considerar usar eso en mis próximos proyectos, si puedo :-) – Bojangles

Cuestiones relacionadas