2014-02-24 147 views
1

在Firefox和Chrome中,是否有方法(可能使用智能CSS)防止滾動條在無限滾動時跳躍?在無限滾動時防止滾動條跳轉

常見的例子:https://twitter.com/search?q=stackoverflow

+2

這是一個瀏覽器的行爲,實際上是有意義的,當新的內容被加載,從而滾動條跳轉到代表頁面的正確位置相對於新內容的高度頁面的高度突然增加。可能的解決方法是逐漸增加新內容的大小(一次顯示一個像素)以允許滾動條緩慢增長。 (我沒有嘗試這個解決方案,也沒有看到它的工作,它只是一個想法) –

+0

非常感謝山姆! –

回答

1

我知道這是一個老問題,但我想我會分享我確定最佳的解決方案。爲了使用它,您必須能夠計算整個頁面的高度(或確定您允許的最大值)。

所以在高水平:

1)確定容器,其內容將被注入的高度,將其設置。這將防止任何滾動跳躍,並會給用戶一個準確的感覺,他們正在查看多少內容。

2)設置一個檢測最後一段內容位置的javascript,並且當該滾動點到達時觸發加載更多。

var scrollInterval; 
function searchScroll() { 
    scrollInterval = setInterval(function() { 
     var lastDivInContainer = $('#results_container').children().last(); 
      if ((lastDivInContainer.offset().top + lastDivInContainer.height()) < ($(window).height() + $(window).scrollTop()) + 100) { 
      $.ajax({ 
       url: "/search/page.php", 
       beforeSend: function(xhr) { 
        clearInterval(scrollInterval); 
       } 
      }).done(function (response) { 
       if (response != 'complete') { 
        $("#results_container").append(response); 
        searchScroll(); 
       } 
      }); 
     } 
    }, 500); 
} 
+0

你好!任何機會你都可以通過實時測試案例來幫助證明這種技術,即。 http://jsfiddle.net/frank_o/pww88u4f/? –