jQuery實現圖片延遲加載
在瀏覽有些網站時,發現圖片是在下拉滾動條時才加載,這是一個很不錯的用戶體驗。這一效果是通過JavaScript 編寫的 jQuery 插件實現的,它可以延遲加載長頁面中的圖片. 在瀏覽器可視區域外的圖片不會被載入, 直到用戶將頁面滾動到它們所在的位置. 這與圖片預加載的處理方式正好是相反的.在包含很多大圖片長頁面中延遲加載圖片可以加快頁面加載速度. 瀏覽器將會在加載可見圖片之后即進入就緒狀態. 在某些情況下還可以幫助降低服務器負擔. 有些WordPress主題也具備了此功能。
這里把這一功能應用到WordPress主題方法說一下,其實很簡單,首先下載jquery.lazyloa.js,放到主題目錄中,然后在header.php模板文件</head>標簽前添加如下代碼:
<script type="text/javascript" src="<?php bloginfo('template_directory');?>/js/jquery.lazyload.js"></script> <script type="text/javascript"> $(function() { $("img").lazyload({ effect : "fadeIn" }); }); </script>
其中img是延遲加載所有圖片,也可以根據不同模板作相應改動,比如我這個主題,可以改成#post img,這樣只延遲加載#post 容器內的圖片,否則可能影響到側邊圖片的加載,主要是留言者頭像可能會最后加載;
fadeIn是圖片顯示效果
這樣基本就可以了!
如果上面的功能可能沒有達到你的要求,還有幾個選項可供設置。
可以設置閥值來控制 靈敏度
-
$(“img”).lazyload({ threshold : 200 });
把閥值設置成200 意思就是當圖片沒有看到之前先load 200像素。當然了你也可以通過設置占位符圖片和自定事件來觸發加載圖片事件
$("img").lazyload({ placeholder : "img/grey.gif", event : "click" });
還可以通過定義effect 參數來定義一些圖片顯示效果
$("img").lazyload({ placeholder : "img/grey.gif", effect : "fadeIn" });
事件觸發加載,事件可以是任何 jQuery 時間, 如: click 和 mouseover. 你還可以使用自定義的事件, 如: sporty 和 foobar. 默認情況下處于等待狀態, 直到用戶滾動到窗口上圖片所在位置. 在灰色占位圖片被點擊之前阻止加載圖片, 你可以這樣做:
$("img").lazyload({ placeholder : "img/grey.gif", event : "click" });
延遲加載圖片,Lazy Load 插件的一個不完整的功能, 但是這也能用來實現圖片的延遲加載. 下面的代碼實現了頁面加載完成后再加載. 頁面加載完成 5 秒后, 指定區域內的圖片會自動進行加載.
$(function() { $("img:below-the-fold").lazyload({ placeholder : "img/grey.gif", event : "sporty" }); }); $(window).bind("load", function() { var timeout = setTimeout(function() {$("img").trigger("sporty")}, 5000); });
圖片在容器里面你可以將插件用在可滾動容器的圖片上, 例如帶滾動條的 DIV 元素. 你要做的只是將容器定義為 jQuery 對象并作為參數傳到初始化方法里面.
CSS
#container { height: 600px; overflow: scroll; }
JavaScript 代碼:
$("img").lazyload({ placeholder : "img/grey.gif", container: $("#container") });
當圖片不順序排列,滾動頁面的時候, Lazy Load 會循環為加載的圖片. 在循環中檢測圖片是否在可視區域內. 默認情況下在找到第一張不在可見區域的圖片時停止循環. 圖片被認為是流式分布的, 圖片在頁面中的次序和 HTML 代碼中次序相同. 但是在一些布局中, 這樣的假設是不成立的. 不過你可以通過 failurelimit 選項來控制加載行為.
$("img").lazyload({ failurelimit : 10 });
下載地址: source, minified or packed
Jquery.LazyLoad.js插件參數詳解:
下面對LazyLoad插件的一些參數進行說明,供使用者做出更貼切的效果。
1,用圖片提前占位
placeholder : "img/grey.gif",
參數:placeholder,值為某一圖片路徑.此圖片用來占據將要加載的圖片的位置,待圖片加載時,占位圖則會隱藏
2,載入使用何種效果
effect : "fadeIn",
參數:effect(特效),值有show(直接顯示),fadeIn(淡入),slideDown(下拉)等,常用fadeIn
3,提前開始加載
threshold : 200,
參數:threshold,值為數字,代表頁面高度.如設置為200,表示滾動條在離目標位置還有200的高度時就開始加載圖片,可以做到不讓用戶察覺.
4,事件觸發時才加載
event : "click",
參數:event,值有click(點擊),mouseover(鼠標劃過),sporty(運動的),foobar(…).可以實現鼠標莫過或點擊圖片才開始加載,后兩個值未測試…
5,對某容器中的圖片實現效果
container: $("#container"),
參數:container,值為某容器.lazyload默認在拉動瀏覽器滾動條時生效,這個參數可以讓你在拉動某DIV的滾動條時依次加載其中的圖片
6,圖片排序混亂時
failurelimit : 10,
參數:failurelimit,值為數字.lazyload默認在找到第一張不在可見區域里的圖片時則不再繼續加載,但當HTML容器混亂的時候可能出現可見區域內圖片并沒加載出來的情況,failurelimit意在加載N張可見區域外的圖片,以避免出現這個問題.
來自:http://www.cnblogs.com/happily/archive/2011/10/20/2219098.html?ADUIN=764339359&ADSESSION=13900051...