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.
¿por qué no utilizar de forma predeterminada la 'posición: fija'? – Sotiris
Establezca la posición en "fijo" en lugar de "absoluto". – Neil
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