最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

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

來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:32:07
文檔

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

前端圖片懶加載(lazyload)的實(shí)現(xiàn)方法(提高用戶體驗(yàn)):定義 圖片懶加載又稱圖片延時(shí)加載、惰性加載,即在用戶需要使用圖片的時(shí)候加載,這樣可以減少請求,節(jié)省帶寬,提高頁面加載速度,相對的,也能減少服務(wù)器壓力。 惰性加載是程序人性化的一種體現(xiàn),提高用戶體驗(yàn),防止一次性加載大量數(shù)據(jù),而是根據(jù)用戶需要進(jìn)行
推薦度:
導(dǎo)讀前端圖片懶加載(lazyload)的實(shí)現(xiàn)方法(提高用戶體驗(yàn)):定義 圖片懶加載又稱圖片延時(shí)加載、惰性加載,即在用戶需要使用圖片的時(shí)候加載,這樣可以減少請求,節(jié)省帶寬,提高頁面加載速度,相對的,也能減少服務(wù)器壓力。 惰性加載是程序人性化的一種體現(xiàn),提高用戶體驗(yàn),防止一次性加載大量數(shù)據(jù),而是根據(jù)用戶需要進(jìn)行

定義

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

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

實(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" alt="" data-src="1.gif">
...
<script data-filtered="filtered">
 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)),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

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

前端圖片懶加載(lazyload)的實(shí)現(xiàn)方法(提高用戶體驗(yàn)):定義 圖片懶加載又稱圖片延時(shí)加載、惰性加載,即在用戶需要使用圖片的時(shí)候加載,這樣可以減少請求,節(jié)省帶寬,提高頁面加載速度,相對的,也能減少服務(wù)器壓力。 惰性加載是程序人性化的一種體現(xiàn),提高用戶體驗(yàn),防止一次性加載大量數(shù)據(jù),而是根據(jù)用戶需要進(jìn)行
推薦度:
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top