欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

網(wǎng)頁圖片延時加載的js代碼

 更新時間:2010年04月22日 20:39:18   作者:  
大家如果使用firebug去查看的話就會發(fā)現(xiàn),當你滾動到相應(yīng)的行時,當前行的圖片才即時加載的,這樣子的話頁面在打開只加可視區(qū)域的圖片,而其它隱藏的圖片則不加載,一定程序上加快了頁面加載的速度,對于比較長的頁面來說,這個方案是比較好的。

實現(xiàn)原理 

把所有需要延時加載的圖片改成如下的格式:

<img lazy_src="圖片路徑" border="0"/>

然后在頁面加載時,把所有使用了lazy_src的圖片都保存到數(shù)組里,然后在滾動時計算可視區(qū)域的top,然后把延時加載的圖片中top小于當前可視區(qū)域(即圖片出現(xiàn)在可視區(qū)域內(nèi))的圖片的src的值用lazy_src的來替換(加載圖片)

代碼

lazyLoad=(function() {
var map_element = {};
var element_obj = [];
var download_count = 0;
var last_offset = -1;
var doc_body;
var doc_element;
var lazy_load_tag;
function initVar(tags) {
doc_body = document.body;
doc_element = document.compatMode == 'BackCompat' ? doc_body: document.documentElement;
lazy_load_tag = tags || ["img", "iframe"];
};
function initElementMap() {
var all_element = [];
//從所有相關(guān)元素中找出需要延時加載的元素
for (var i = 0,
len = lazy_load_tag.length; i < len; i++) {
var el = document.getElementsByTagName(lazy_load_tag[i]);
for (var j = 0,
len2 = el.length; j < len2; j++) {
if (typeof(el[j]) == "object" && el[j].getAttribute("lazy_src")) {
element_obj.push(all_element[key]);
}
}
}

for (var i = 0,
len = element_obj.length; i < len; i++) {
var o_img = element_obj[i];
var t_index = getAbsoluteTop(o_img);//得到圖片相對document的距上距離
if (map_element[t_index]) {
map_element[t_index].push(i);
} else {
//按距上距離保存一個隊列
var t_array = [];
t_array[0] = i;
map_element[t_index] = t_array;
download_count++;//需要延時加載的圖片數(shù)量
}
}

};
function initDownloadListen() {
if (!download_count) return;
var offset = (window.MessageEvent && !document.getBoxObjectFor) ? doc_body.scrollTop: doc_element.scrollTop;
//可視化區(qū)域的offtset=document的高+
var visio_offset = offset + doc_element.clientHeight;
if (last_offset == visio_offset) {
setTimeout(initDownloadListen, 200);
return;
}
last_offset = visio_offset;
var visio_height = doc_element.clientHeight;
var img_show_height = visio_height + offset;
for (var key in map_element) {
if (img_show_height > key) {
var t_o = map_element[key];
var img_vl = t_o.length;
for (var l = 0; l < img_vl; l++) {
element_obj[t_o[l]].src = element_obj[t_o[l]].getAttribute("lazy_src");
}
delete map_element[key];
download_count--;
}
}
setTimeout(initDownloadListen, 200);
};
function getAbsoluteTop(element) {
if (arguments.length != 1 || element == null) {
return null;
}
var offsetTop = element.offsetTop;
while (element = element.offsetParent) {
offsetTop += element.offsetTop;
}
return offsetTop;
}
function init(tags) {
initVar(tags);
initElementMap();
initDownloadListen();
};
return {
init: init
}
})();

使用方法:把頁面上需要延時加載的圖片src改成為lazy_src,然后把上面的js放到body最后面,然后調(diào)用:lazyLoad.init();

調(diào)戲的方法可以使用firebug來查看一時圖片是否是延時加載。

另外:

如果你的頁面上存在有內(nèi)容切換的欄目的話,可能在切換時切換的內(nèi)容里的圖片可能會不顯示,處理的方法是在內(nèi)容時單獨圖片加載處理,如:

///切換內(nèi)容的代碼...
chlid.find("img[init_src]").each(function(){
$(this).attr("src",$(this).attr("init_src"));
$(this).removeAttr("init_src");

});

相關(guān)文章

  • uni-app中彈窗的使用與自定義彈窗

    uni-app中彈窗的使用與自定義彈窗

    眾所周知彈窗在我們實際開發(fā)場景中是非常常用的,最近在工作中就遇到了相關(guān)需求,所以下面這篇文章主要給大家介紹了關(guān)于uni-app中彈窗使用與自定義彈窗的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • 原生js實現(xiàn)淘寶首頁點擊按鈕緩慢回到頂部效果

    原生js實現(xiàn)淘寶首頁點擊按鈕緩慢回到頂部效果

    本例將實現(xiàn)這樣的一個效果:下拉到一定距離后按鈕才顯示出來,鼠標放到按鈕上時,按鈕背景會變成灰色,并且圖標變成了文字。點擊按鈕緩慢回到頂部
    2014-04-04
  • 打印Proxy對象和ref對象的包實現(xiàn)詳解

    打印Proxy對象和ref對象的包實現(xiàn)詳解

    這篇文章主要為大家介紹了打印Proxy對象和ref對象的包實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • Javascript遍歷table中的元素示例代碼

    Javascript遍歷table中的元素示例代碼

    這篇文章主要介紹了Javascript如何遍歷table中的元素,需要的朋友可以參考下
    2014-07-07
  • JS沙箱模式實例分析

    JS沙箱模式實例分析

    這篇文章主要介紹了JS沙箱模式,結(jié)合實例形式分析了JS沙箱模式的原理與實現(xiàn)方法,需要的朋友可以參考下
    2017-09-09
  • 基于postman獲取動態(tài)數(shù)據(jù)過程詳解

    基于postman獲取動態(tài)數(shù)據(jù)過程詳解

    這篇文章主要介紹了基于postman獲取動態(tài)數(shù)據(jù)過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • JavaScript數(shù)組中reduce方法的應(yīng)用詳解

    JavaScript數(shù)組中reduce方法的應(yīng)用詳解

    JavaScript 中的reduce()方法可以用于將數(shù)組元素匯總為單個值,,所以本文為大家整理了一些JavaScript數(shù)組中reduce方法的應(yīng)用,需要的可以參考一下
    2023-07-07
  • js前端加載超大圖片(100M以上)實現(xiàn)秒開的最佳解決方案

    js前端加載超大圖片(100M以上)實現(xiàn)秒開的最佳解決方案

    前端加載超大圖片時,一般可以采取圖片壓縮,圖片分割,預加載等措施,而對于幾百M或上G的大圖而言,不管對圖片進行怎么優(yōu)化或加速處理,要實現(xiàn)秒開也是不太可能的事情,所以本文小編將給大家介紹如何對大圖進行分割,在前端進行拼接實現(xiàn)秒開,需要的朋友可以參考下
    2023-10-10
  • javascript之彈出窗口居中的代碼

    javascript之彈出窗口居中的代碼

    有時候我們在網(wǎng)頁制作過程中需要彈出窗口,一般情況下,我們更希望窗口可以居中顯示
    2007-08-08
  • BootStrap的雙日歷時間控件使用

    BootStrap的雙日歷時間控件使用

    這段時間看了下bootstrap的時間控件,發(fā)現(xiàn)使用起來還是很簡單的,趁著有時間的時候整理了一下,特此分享到腳本之家平臺,感興趣的朋友參考下
    2017-07-07

最新評論