国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開發(fā) > JS > 正文

前端圖片懶加載(lazyload)的實(shí)現(xiàn)方法(提高用戶體驗(yàn))

2024-05-06 16:39:08
字體:
供稿:網(wǎng)友

定義

圖片懶加載又稱圖片延時(shí)加載、惰性加載,即在用戶需要使用圖片的時(shí)候加載,這樣可以減少請(qǐng)求,節(jié)省帶寬,提高頁(yè)面加載速度,相對(duì)的,也能減少服務(wù)器壓力。

惰性加載是程序人性化的一種體現(xiàn),提高用戶體驗(yàn),防止一次性加載大量數(shù)據(jù),而是根據(jù)用戶需要進(jìn)行資源的請(qǐng)求。

實(shí)現(xiàn)

懶加載的難點(diǎn)在于確定某張圖片是否是用戶需要的資源,在瀏覽器中,用戶需要的是可視區(qū)內(nèi)的資源,因此我們只需要判斷圖片是否已經(jīng)呈現(xiàn)在可視區(qū)內(nèi),當(dāng)圖片呈現(xiàn)在可視區(qū)內(nèi)時(shí),獲取圖片的真實(shí)地址并賦給該圖片即可(圖片寬高需要指定,可以利用padding處理)。

判斷是否存在于可視區(qū)

瀏覽器視口高度

待加載資源距離視口頂端位置

通過以上兩點(diǎn)即可判斷圖片是否位于可視區(qū)內(nèi)。

var nodes = document.querySelectorAll('img[data-src]'),  elem = nodes[0],  rect = elem.getBoundingClientRect(),  vpHeight = document.documentElement.clientHeight;if(rect.top < vpHeight && rect.bottom>=0) { console.log('show')}

之后獲取圖片的真實(shí)地址

<img src="loading.gif"  var src = elem.dataset.src;</script>

把真實(shí)地址賦給圖片

var img = new Image();img.onload = function(){ elem.src = img.src;}img.src = src;

完整代碼

var scrollElement = document.querySelector('.page'),  viewH = document.documentElement.clientHeight;function lazyload(){ var nodes = document.querySelectorAll('img[data-src]'); Array.prototype.forEach.call(nodes,function(item,index){  var rect;  if(item.dataset.src==='') return;  rect = item.getBoundingClientRect();  if(rect.bottom>=0 && rect.top < viewH){    (function(item){     var img = new Image();     img.onload = function(){      item.src = img.src;     }     img.src = item.dataset.src     item.dataset.src = ''    })(item)  } })}lazyload();scrollElement.addEventListener('scroll',throttle(lazyload,500,1000));function throttle(fun, delay, time) {  var timeout,    startTime = new Date();  return function() {    var context = this,      args = arguments,      curTime = new Date();    clearTimeout(timeout);    if (curTime - startTime >= time) {      fun.apply(context, args);      startTime = curTime;    } else {      timeout = setTimeout(fun, delay);    }  };};

總結(jié)

以上所述是小編給大家介紹的前端圖片懶加載(lazyload)的實(shí)現(xiàn)方法(提高用戶體驗(yàn)),希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)VeVb武林網(wǎng)網(wǎng)站的支持!


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JavaScript/Ajax教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 景德镇市| 金乡县| 长顺县| 津市市| 宜丰县| 阿克| 偏关县| 永川市| 温泉县| 敦煌市| 尚志市| SHOW| 交城县| 宝兴县| 法库县| 合作市| 绿春县| 旌德县| 榆中县| 长乐市| 南城县| 古丈县| 秀山| 乌拉特后旗| 改则县| 兰州市| 麻江县| 蒲城县| 商洛市| 崇阳县| 栖霞市| 尉氏县| 缙云县| 四子王旗| 山阴县| 保康县| 英山县| 内黄县| 平和县| 平定县| 高要市|