jQuery實現圖片延遲加載

在瀏覽有些網站時,發現圖片是在下拉滾動條時才加載,這是一個很不錯的用戶體驗。這一效果是經過JavaScript 編寫的 jQuery 插件實現的,它能夠延遲加載長頁面中的圖片. 在瀏覽器可視區域外的圖片不會被載入, 直到用戶將頁面滾動到它們所在的位置. 這與圖片預加載的處理方式正好是相反的.在包含不少大圖片長頁面中延遲加載圖片能夠加快頁面加載速度. 瀏覽器將會在加載可見圖片以後即進入就緒狀態. 在某些狀況下還能夠幫助下降服務器負擔. 有些WordPress主題也具有了此功能。javascript

這裏把這一功能應用到WordPress主題方法說一下,其實很簡單,首先下載jquery.lazyloa.js,放到主題目錄中,而後在header.php模板文件</head>標籤前添加以下代碼:php

  1. <script type="text/javascript" src="<?php bloginfo('template_directory');?>/js/jquery.lazyload.js"></script>java

  2. <script type="text/javascript">jquery

  3. $(function() {瀏覽器

  4. $("img").lazyload({服務器

  5. effect : "fadeIn"app

  6. });ide

  7. });佈局

  8. </script>post

其中img是延遲加載全部圖片,也能夠根據不一樣模板做相應改動,好比我這個主題,能夠改爲#post img,這樣只延遲加載#post 容器內的圖片,不然可能影響到側邊圖片的加載,主要是留言者頭像可能會最後加載;

fadeIn是圖片顯示效果

這樣基本就能夠了!

若是上面的功能可能沒有達到你的要求,還有幾個選項可供設置。

能夠設置閥值來控制 靈敏度

  1. $(「img」).lazyload({ threshold : 200 });  

把閥值設置成200 意思就是當圖片沒有看到以前先load 200像素。固然了你也能夠經過設置佔位符圖片和自定事件來觸發加載圖片事件

  1. $("img").lazyload({   

  2. placeholder : "img/grey.gif",   

  3. event : "click"  

  4. });  

還能夠經過定義effect 參數來定義一些圖片顯示效果

  1. $("img").lazyload({   

  2. placeholder : "img/grey.gif",   

  3. effect : "fadeIn"  

  4. });  

事件觸發加載,事件能夠是任何 jQuery 時間, 如: click 和 mouseover. 你還可使用自定義的事件, 如: sporty 和 foobar. 默認狀況下處於等待狀態, 直到用戶滾動到窗口上圖片所在位置. 在灰色佔位圖片被點擊以前阻止加載圖片, 你能夠這樣作:

  1. $("img").lazyload({   

  2. placeholder : "img/grey.gif",   

  3. event : "click"  

  4. });  

延遲加載圖片,Lazy Load 插件的一個不完整的功能, 可是這也能用來實現圖片的延遲加載. 下面的代碼實現了頁面加載完成後再加載. 頁面加載完成 5 秒後, 指定區域內的圖片會自動進行加載.

  1. $(function() {   

  2. $("img:below-the-fold").lazyload({   

  3. placeholder : "img/grey.gif",   

  4. event : "sporty"  

  5. });   

  6. });   

  7. $(window).bind("load"function() {   

  8. var timeout = setTimeout(function() {$("img").trigger("sporty")}, 5000);   

  9. });  

圖片在容器裏面你能夠將插件用在可滾動容器的圖片上, 例如帶滾動條的 DIV 元素. 你要作的只是將容器定義爲 jQuery 對象並做爲參數傳到初始化方法裏面.

CSS

  1. #container {   

  2. height600px;   

  3. overflowscroll;   

  4. }  

JavaScript 代碼:

  1. $("img").lazyload({   

  2. placeholder : "img/grey.gif",   

  3. container: $("#container")   

  4. });  

當圖片不順序排列,滾動頁面的時候, Lazy Load 會循環爲加載的圖片. 在循環中檢測圖片是否在可視區域內. 默認狀況下在找到第一張不在可見區域的圖片時中止循環. 圖片被認爲是流式分佈的, 圖片在頁面中的次序和 HTML 代碼中次序相同. 可是在一些佈局中, 這樣的假設是不成立的. 不過你能夠經過 failurelimit 選項來控制加載行爲.

  1. $("img").lazyload({   

  2. failurelimit : 10   

  3. });  

下載地址: sourceminified or packed

 

 

Jquery.LazyLoad.js插件參數詳解: 下面對LazyLoad插件的一些參數進行說明,供使用者作出更貼切的效果。1,用圖片提早佔位placeholder : "img/grey.gif",參數:placeholder,值爲某一圖片路徑.此圖片用來佔據將要加載的圖片的位置,待圖片加載時,佔位圖則會隱藏2,載入使用何種效果effect : "fadeIn",參數:effect(特效),值有show(直接顯示),fadeIn(淡入),slideDown(下拉)等,經常使用fadeIn3,提早開始加載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張可見區域外的圖片,以免出現這個問題.

相關文章
相關標籤/搜索