91网首页-91网页版-91网在线观看-91网站免费观看-91网站永久视频-91网站在线播放

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

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

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

1.懶加載原理

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

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

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

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

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

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

fb04b9d6c0b23655ab7ba867d3d06b1c.png

如上圖所示,讓在瀏覽器可視區(qū)域的圖片顯示,可視區(qū)域外的不顯示,所以當(dāng)圖片距離頂部的距離top->height等于可視區(qū)域h和滾動(dòng)區(qū)域高度s之和時(shí)說明圖片馬上就要進(jìn)入可視區(qū)了,就是說當(dāng)top->height<=s+h時(shí),圖片在可視區(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)高度(以像素為單位);如果有水平滾動(dòng)條,也包括滾動(dòng)條高度。

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.  // 懶加載實(shí)現(xiàn)

13.  function lazyload(imgs){

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

15.  var h = window.innerHeight;

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

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

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

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

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

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

22.                 (function(i){

23.  setTimeout(function(){

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

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

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

27.  var temp = new Image();

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

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

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

主站蜘蛛池模板: 爱豆传媒电影 | 成人午夜资源站 | 无码精品人妻一区二区三区中 | 国产欧美日韩综合 | 精品免费一区二区 | 国产噜噜噜精品免费 | 91九色蝌蚪熟女 | 国产欧美性爱 | 国产精美| 91丨九色丨| 日韩精品自拍偷 | 91免费网址福利 | 动漫精品一区二 | 国产有码一级 | 日本高清免费 | 日本不卡2 | 日本成年人黄a大片 | 国产欧美一区三 | 精品三级网 | www.日| 日本欧美女优在线 | 成人不卡| 日韩视频第1 | 区免费入口 | 日本在线看片网站 | 国产亚洲一卡一 | 乱子伦视频 | 欧美亚洲午夜成人v | 91黑丝系列 | 精品国产手机自 | 区三区国产高清视频 | 精品三级网 | 国产成年无 | 精新精新国产自在现 | 国产亚洲成aⅴ人片 | 日本高清中| 韩剧高清电影 | 国产免费a精品视频 | 国产精品日韩欧 | 日本爽爽爽爽爽 | 国产精品又粗又大 |