狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

【JavaScript】JS實現(xiàn)WEB頁面上的圖片動態(tài)懶加載

admin
2023年5月24日 10:11 本文熱度 978

1.懶加載原理

圖片未進(jìn)入可視區(qū)域時,先不加載圖片可以加載指定的動態(tài)提示圖片。

2.懶加載思路及實現(xiàn)

實現(xiàn)懶加載有四個步驟,如下:
1.加載提示圖片
2.判斷哪些圖片要加載
3.隱形加載圖片
4.替換真圖片

1.加載loading圖片是在html部分就實現(xiàn)的

2.如何判斷圖片進(jìn)入可視區(qū)域是關(guān)鍵。

引用網(wǎng)友的一張圖,可以很清楚的看出可視區(qū)域。

fb04b9d6c0b23655ab7ba867d3d06b1c.png

如上圖所示,讓在瀏覽器可視區(qū)域的圖片顯示,可視區(qū)域外的不顯示,所以當(dāng)圖片距離頂部的距離top->height等于可視區(qū)域h和滾動區(qū)域高度s之和時說明圖片馬上就要進(jìn)入可視區(qū)了,就是說當(dāng)top->height<=s+h時,圖片在可視區(qū)。

常用API函數(shù):
頁可見區(qū)域?qū)挘?document.body.clientWidth;
網(wǎng)頁可見區(qū)域高: document.body.clientHeight;
網(wǎng)頁可見區(qū)域?qū)挘?document.body.offsetWidth (包括邊線的寬);
網(wǎng)頁可見區(qū)域高: document.body.offsetHeight (包括邊線的寬);
網(wǎng)頁正文全文寬: document.body.scrollWidth;
網(wǎng)頁正文全文高: document.body.scrollHeight;
網(wǎng)頁被卷去的高: document.body.scrollTop;
網(wǎng)頁被卷去的左: document.body.scrollLeft;
網(wǎng)頁正文部分上: window.screenTop;
網(wǎng)頁正文部分左: window.screenLeft;
屏幕分辨率的高: window.screen.height;
屏幕分辨率的寬: window.screen.width;
屏幕可用工作區(qū)高度: window.screen.availHeight;

HTMLElement.offsetTop 為只讀屬性,它返回當(dāng)前元素相對于其 offsetParent 元素的頂部的距離。window.innerHeight:瀏覽器窗口的視口(viewport)高度(以像素為單位);如果有水平滾動條,也包括滾動條高度。

1.   // onload是等所有的資源文件加載完畢以后再綁定事件

2.   window.onload = function(){

3.    // 獲取圖片列表,即img標(biāo)簽列表

4.    var imgs = document.queryselectorAll('img');

5.    

6.    // 獲取到瀏覽器頂部的距離

7.    function getTop(e){

8.    console.log('e.offsetTop', e.offsetTop)

9.    return e.offsetTop;

10.     }

11.  

12.  // 懶加載實現(xiàn)

13.  function lazyload(imgs){

14.  // 可視區(qū)域高度

15.  var h = window.innerHeight;

16.  //滾動區(qū)域高度

17.  var s = document.documentElement.scrollTop || document.body.scrollTop;

18.  for(var i=0;i<imgs.length;i++){

19.  //圖片距離頂部的距離大于可視區(qū)域和滾動區(qū)域之和時懶加載

20.  if ((h+s)>getTop(imgs[i])) {

21.  // 真實情況是頁面開始有2秒空白,所以使用setTimeout定時2s

22.                 (function(i){

23.  setTimeout(function(){

24.  // 不加立即執(zhí)行函數(shù)i會等于9

25.  // 隱形加載圖片或其他資源,

26.  //創(chuàng)建一個臨時圖片,這個圖片在內(nèi)存中不會到頁面上去。實現(xiàn)隱形加載

27.  var temp = new Image();

28.  temp.src = imgs[i].getAttribute('src');//只會請求一次

29.  // onload判斷圖片加載完畢,真是圖片加載完畢,再賦值給dom節(jié)點

30.  temp.onload = function(){

31.  // 獲取自定義屬性src,用真圖片替換假圖片

32.  imgs[i].src = imgs[i].getAttribute('src')

33.                         }

34.                     },2000)

35.                 })(i)

36.             }

37.         }

38.     }

39.  lazyload(imgs);

40.  

41.  // 滾屏函數(shù)

42.  window.onscroll =function(){

43.  lazyload(imgs);

44.     }

45. }



該文章在 2023/5/24 10:22:55 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務(wù)費用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務(wù)都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved