關注電子商務網站開發-《簡單易用的JQUERY外掛程式–圖片延時載入外掛程式(lazyload)》

來源:互聯網
上載者:User

圖片延時載入(lazyload)是網站常用的一種手段,目的是為了減少頁面載入時向伺服器的請求數,這裡分享一款支援大部分情況下(如IPAD瀏覽、非同步載入、某個範圍載入)的圖片延時載入外掛程式。

 

代碼及效果

先貼代碼:

  $.extend({            imgLoad: function (options) {                options = $.extend({                    container: "img",//集合                    time: 600,//滾動時定時重新整理時間                    attribute: "src2" //儲存原圖地址的自訂屬性                }, options);                var container = options.container, n = n || 0, tim, _time = 0;                Load();                function GetHeight() {                    var d = document,                        y = (navigator.userAgent.toLowerCase().match(/iPad/i) == "ipad") ? window.pageYOffset : Math.max(d.documentElement.scrollTop, d.body.scrollTop);                    return d.documentElement.clientHeight + y - n;                }                function Load() {                    var hg = GetHeight();                    $(container).each(function () {                        var _s2 = $(this).attr(options.attribute), t = $(this).offset().top;                        if (_s2 && t < hg && t > hg - 1000) {                            $(this).attr("src", _s2).removeAttr(options.attribute)                        };                    })                };                if (!!window.ActiveXObject && !window.XMLHttpRequest)                { _time = options.time }                $(window).scroll(function () {                    clearTimeout(tim);                    tim = setTimeout(function () { Load(); }, options.time);                });            }        })

點擊這裡查看效果

 

參數說明

參數container:container表示要遍曆的容器,預設是IMG,也就是遍曆整個頁面的所有IMG。如果想只延時載入某個範圍內的圖片,可以修改此參數,如我想非同步載入面代碼中ul中的圖片,那麼只需要設定參數container的值為".imgContainer li img"即可。

<Script type="javascript/text">    $(function(){          $.imgLoad({ container: ".imgContainer li img"});    })</Script> <ul class="imgContainer">            <li>                <img src2="X1.JPG" />            </li>            <li>                <img src2="X2.JPG" />            </li>            <li>                <img src2="X3.JPG" />            </li>                    </ul>

參數time:參數time表示延時載入的時間,預設是600毫秒,就是說當頁面滾動到該範圍時0.6秒後該圖片就會顯示,設定time為1秒:

<Script type="javascript/text">$(function(){     $.imgLoad({"time":1000 });})</Script>

參數attribute:此參數為儲存圖片路徑的參數,在圖片設定SRC屬性之前,要把真實的圖片路徑存在某個屬性裡,預設為SRC2,可以把此屬性設定為任意:

<Script type="javascript/text">    $(function(){        $.imgLoad({ attribute: "myAttr"});    })</Script><body>     <img myAttr="1.jpg"/></body>

基本參數已經講完了,關於調用也是相當簡單的。這裡還有一個問題,由於延時載入的方法是寫在頁面滾動的事件裡,也就是代碼中的

 $(window).scroll(function () {                    clearTimeout(tim);                    tim = setTimeout(function () { Load(); }, options.time);                });

那麼如果直接重新整理頁面瀏覽器會直接跳到當前停留的位置,但是有的瀏覽器沒有觸發scroll事件,這種情況下的解決辦法在頁面載入完成後使用scrollTop方法,讓瀏覽器向上1個像素:

jQuery(window).scrollTop(1)

這樣這個外掛程式就講完了,相對於網上的一些外掛程式應該算是簡單實用的了,歡迎大家踴躍討論。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.