Smetti di flottare Sticky Sidebar Div al piè di pagina (quasi lavorando)
Domanda
Voglio prenderlo in modo che l'ultimo div sulla mia barra laterale rimane appiccicoso quando la pagina scorre, ma si ferma al piè di pagina.Ho quasi lavorato con un tutorial online , ma il calcolo si incasinare quando il disqus commenta il carico e va soload un certo punto.
Ecco una versione di lavoro http://jsfiddle.net/k56yyr/1/ , ma c'è un modo semplice perFai qualcosa come calcolare l'altezza del piè di pagina e poi dirlo a smettere di scorrere lo scorrimento lontano dal fondo della pagina?
Soluzione
Penso che il tuo problema sia che il tuo valore $('#footer').offset().top
cambia dopo il caricamento dei commenti del disqus.Quindi è necessario aggiornare footerTop
(e limit
in base al nuovo valore footerTop
) dopo il caricamento dei commenti o ogni volta che il tuo evento si incrementa.
Qualcosa come:
$(function(){ // document ready
if ($('#sticky').length) { // make sure "#sticky" element exists
var el = $('#sticky');
var stickyTop = $('#sticky').offset().top; // returns number
var stickyHeight = $('#sticky').height();
$(window).scroll(function(){ // scroll event
var limit = $('#footer').offset().top - stickyHeight - 20;
var windowTop = $(window).scrollTop(); // returns number
if (stickyTop < windowTop){
el.css({ position: 'fixed', top: 0 });
}
else {
el.css('position','static');
}
if (limit < windowTop) {
var diff = limit - windowTop;
el.css({top: diff});
}
});
}
});
.
Come con la maggior parte dei casi, c'è un plugin jquery per questo, come julianm sottolineato nel suo commento,Disponibile qui .Supporta anche un valore di tappo, per fermare la scatola appiccicosa in qualsiasi posizione desiderata.