你問延遲加載。
那麼答案必須包括一個服務器端。你的問題沒有說明你正在使用什麼類型的服務器端語言。在我的答案中,我將使用一些基本的PHP代碼來模擬隨機博客帖子。
延遲加載意味着我們只加載用戶可以看到的內容,然後在需要時加載更多數據。
加載數據意味着 - 從服務器請求它。這通常涉及AJAX但不一定。 (儘管你可能會使用AJAX)。 JQuery有一個很棒的ajax interface。
最大的問題是 - 什麼應該觸發我的下一個負載 - 因此所有的插件。
我接受了Tgr的建議並實施了一個帶有航點的延遲加載。我甚至使用waypoint tutorial for lazy loading作爲Tgr建議(請給予Tgr更多分數)。
你可以看到我在my site
我做了什麼是模擬的博客文章不斷變化的標題實現。每次用戶滾動足夠的時間,我都會從服務器獲取更多帖子。
我爲我的源添加了一個下載鏈接,所以你可以下載並開始玩它。只需運行main.html
,你就可以走了。
文件more_posts.php
生成帶有隨機標題的lorem ipsum
帖子。 (我需要一些假內容在頁面上滾動)。
它看起來像這樣
<h1> This is post number <?php echo uniqid("",true)?> </h1>
<div style="color:red">
Lorem ipsum dolor .... Quisque ut pretium nibh.
</div>
<div style="color:blue">
Lorem ipsum dolor .... Quisque ut pretium nibh.
</div>
正如你所看到的唯一的PHP代碼我是添加一些隨機的稱號。
這應該看起來很熟悉,因爲您的博客中已經有超過25篇文章。
真正的邏輯在於main.html
- HTML部分看起來像這樣
<section id="container">
</section>
<footer>
<nav>
<ul>
<!-- Hijack this link for the infinite scroll -->
<li class="more"><a href="more_posts.php" title="Traditional navigation link">Next Page</a></li>
</ul>
</nav>
</footer>
的想法是你有section
包含前幾帖 - 並給你一些滾動的頁面上。在底部,您在footer
內有一個more
鏈接,即禁用JavaScript時應該充當常規的「下一個」鏈接。
Waypoint使用此鏈接觸發下一次加載。每當鏈接即將顯示在屏幕上時,我們將使用ajax自動獲取下一篇文章。
所以JavaScript的部分看起來像這樣:
$(document).ready(function() {
function loadMorePosts(callback){
$.get($('.more a').attr('href'), function(data) {
$('#container').append($(data));
if (typeof(callback) == "function"){ callback(); }
})
}
loadMorePosts();
var $footer = $('footer');
var opts = {
offset: '100%'
};
$footer.waypoint(function(event, direction) {
$footer.waypoint('remove');
loadMorePosts(function(){ $footer.waypoint(opts);});
}, opts);
});
功能loadMorePosts
調用方法$.get
這是$.ajax({type:'GET' .. })
一個簡單的語法。它使用與鏈接的href屬性具有相同的URL。在我的例子中,href屬性指向「more_posts.php」。
當我的演示加載時,內容完全是空的,所以我繼續前進並獲取我想要顯示的第一篇文章。然後,我告訴航點聽取頁腳 - 每當頁腳靠近時,我會去找更多的帖子。
有一個棘手的部分,我做$footer.waypoint('remove')
並傳遞到callback
loadMorePosts
結合航點再次頁腳。這僅僅是一個技術性問題 - 航點需要你刪除的觸發器,而你獲取更多的HTML,其他的頁面可能充當搞笑..
這是或多或少的..
我試圖使這個簡單儘可能,但是在一個答案中涵蓋一個巨大的問題。 因此,讓我知道我是否可以做更多的事情來清理事情。
我認爲這篇文章介紹你在找什麼: http://stackoverflow.com/questions/8192651/load-lazy-loading-a-div-whenever-the-div-gets-visible首次使用 – Mossawi 2012-08-22 08:37:08
你看過http://www.infinite-scroll.com/ – Cyclonecode 2012-08-22 09:48:06
你看過我的答案嗎?它是如何工作的? – AddiktedDesign 2012-08-22 12:39:48