91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何實現前端圖片懶加載

發布時間:2021-08-02 10:35:16 來源:億速云 閱讀:143 作者:小新 欄目:web開發

這篇文章主要介紹了如何實現前端圖片懶加載,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

定義

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

惰性加載是程序人性化的一種體現,提高用戶體驗,防止一次性加載大量數據,而是根據用戶需要進行資源的請求。

實現

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

判斷是否存在于可視區

瀏覽器視口高度

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

通過以上兩點即可判斷圖片是否位于可視區內。

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')
}

之后獲取圖片的真實地址

<img src="loading.gif" alt="" data-src="1.gif">
...
<script data-filtered="filtered">
  var src = elem.dataset.src;
</script>

把真實地址賦給圖片

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);
    }
  };
};

感謝你能夠認真閱讀完這篇文章,希望小編分享的“如何實現前端圖片懶加載”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

西乌| 鞍山市| 左贡县| 依兰县| 罗田县| 碌曲县| 襄垣县| 临朐县| 光泽县| 桓仁| 宜春市| 准格尔旗| 岑溪市| 兖州市| 通州市| 台东县| 瑞安市| 自治县| 平罗县| 穆棱市| 澄迈县| 永仁县| 永嘉县| 蕲春县| 江油市| 安远县| 冷水江市| 满城县| 浮山县| 霍山县| 永吉县| 保德县| 西丰县| 民勤县| 同仁县| 桂平市| 衡阳市| 潜山县| 临泽县| 株洲市| 尚义县|