2012-05-19 14 views
6

Sayfayı kaydırdığımda kenar çubuğumdaki son bölümün yapışkan kalacağını, ancak altbilgide durmasını sağlamak istiyorum. Neredeyse bir online tutorial ile çalışıyorum, ancak disqus yorumları yüklendiğinde hesaplama bozuluyor ve sadece belirli bir noktaya gidiyor.Kayan yapışkan kenar çubuğunu altbilgideki durdur (neredeyse çalışır durumda)

İşte bir çalışma sürümü http://jsfiddle.net/k56yR/1/, ancak altbilgi yüksekliğini hesaplamak gibi bir şey yapmanın kolay bir yolu var mı ve sonra sayfanın alt kısmından çok uzakta kaydırma durdurmak için söyle?

cevap

14

Sorununuzu, disqus yorumları yüklendikten sonra $('#footer').offset().top değerinizin değiştiğini düşünüyorum. Bu nedenle, yorumlarınız yüklendikten veya etkinliğiniz her tetiklendikten sonra footerTop (ve footerTop değerine bağlı olarak limit) güncellemeniz gerekir. gibi

şey: vakaların çoğunda olduğu gibi

$(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}); 
      } 
     }); 
    } 
}); 

, julianm yorumunda belirttiği gibi, mevcut here bunun için bir jQuery eklentisi var. Aynı zamanda yapışkan kutuyu istenen herhangi bir pozisyonda durdurmak için bir durdurucu değerini destekler.

+0

Teşekkürler, neredeyse çalışıyor. Öyle sanıyordum, ancak farklı tarayıcılarda bu sınırı göz ardı ediyor ve altbilgiyi geçiyor. Önbelleği temizlediğinizde veya sayfayı yenilediğinizde bir kez çalışacak gibi görünüyor, ardından her tekrar görünümü için değil. Herhangi bir fikir? http://thecomeupbmx.net/videos/red-bull-empire-of-dirt-practice-edit/ adresindeki bir örnek: (benim değil, sadece üzerinde çalışıyorum) –

+0

Bir çeşit şeye ihtiyacım var Bunun için her zaman başarısız olan test durumu. Eski jleri önbelleğe alan tarayıcılar olabilir, ancak bunu yeniden oluşturamıyorum. – 19greg96

+0

Bu jQuery eklentisi https://github.com/AndrewHenderson/jSticky (Mike Jonas tarafından sağlanan önceki örneğin yorumlarından birinde gördüm) tam olarak aradığım şeyi yaptı. Yapışkan kutuyu istenen herhangi bir pozisyonda durdurmak için bir stoper değerini (bir sınıf, ID veya sayısal bir değer olabilir) destekler. – julianm