Ecco il codice che uso per creare una barra laterale "appiccicoso". Dovrai modificare gli ID per adattarli al tuo markup.
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;
});
In sostanza, tutto quello che dovete fare è cambiare la #sidebar
per l'ID del contenitore barra laterale. Questo codice vedrà se l'elemento della barra laterale scorrerà oltre la parte superiore dello schermo. In caso affermativo, modifica la sua posizione su fixed
e, quando ritorna alla pagina, la posizione viene restituita a static
(impostazione predefinita).
Le funzioni $(document).resize()
e $(window).resize()
assicurano che la barra laterale rimanga attaccata nella parte superiore della pagina quando il documento/finestra viene ridimensionato rispettivamente. La funzione del documento assicurerà che la barra laterale funzioni correttamente anche se le animazioni jQuery cambiano la dimensione degli elementi.
perché non utilizzare di default il 'position: fixed'? – Sotiris
Imposta la pozione su "fisso" anziché su "assoluto". – Neil
ok ma vorrei che il nav scendesse fino a un punto e poi passassi a fisso dopo, come posso ottenere jquery per farlo? – sat