自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

最實(shí)用的圖片懶加載精解

移動(dòng)開發(fā)
圖片延遲加載也稱為懶加載,延遲加載圖片或符合某些條件時(shí)才加載某些圖片,通常用于圖片比較多的網(wǎng)頁(yè)??梢詼p少請(qǐng)求數(shù)或者延遲請(qǐng)求數(shù),優(yōu)化性能。

定義

圖片延遲加載也稱為懶加載,延遲加載圖片或符合某些條件時(shí)才加載某些圖片,通常用于圖片比較多的網(wǎng)頁(yè)。可以減少請(qǐng)求數(shù)或者延遲請(qǐng)求數(shù),優(yōu)化性能。
呈現(xiàn)形式
【1】延時(shí)加載,使用setTimeout或setInterval進(jìn)行加載延遲,如果用戶在加載前就離開,自然就不會(huì)進(jìn)行加載。
【2】條件加載,符合某些條件或者觸發(fā)了某些條件才開始異步加載。
【3】可視區(qū)域加載,僅僅加載用戶可以看到的區(qū)域,這個(gè)主要監(jiān)控滾動(dòng)條來(lái)實(shí)現(xiàn),一般距離用戶看到的底邊很近的時(shí)候開始加載,這樣能保證用戶下拉時(shí)圖片正好接上,不會(huì)有礦長(zhǎng)時(shí)間的停頓。
基本步驟

【1】網(wǎng)頁(yè)中的圖片都設(shè)為同一張圖片
【2】給圖片增加data-original = "img/test.jpg"的屬性,保存圖片的真實(shí)地址
【3】當(dāng)觸發(fā)某些條件時(shí),自動(dòng)改變?cè)搮^(qū)域的圖片的src屬性為真實(shí)的地
應(yīng)用

【點(diǎn)擊按鈕顯示圖片】

  1. <!DOCTYPE html> 
  2. <html lang="en"> 
  3. <head> 
  4. <meta charset="UTF-8"> 
  5. <title>Document</title> 
  6. <style> 
  7. body{ 
  8. margin: 0; 
  9. img{ 
  10. height: 100px; 
  11. width: 100px; 
  12. </style> 
  13. </head> 
  14. <body> 
  15. <button>加載圖片</button> 
  16. <img src="#" alt="測(cè)試" data-original = "img/test.png"> 
  17. <script> 
  18. var oBtn = document.getElementsByTagName('button')[0]; 
  19. var oImg = document.images[0]; 
  20. oBtn.onclick = function(){ 
  21. oImg.src = "img/loading.gif"
  22. if(oImg.dataset){ 
  23. aftLoadImg(oImg,oImg.dataset.original); 
  24. }else{ 
  25. aftLoadImg(oImg,oImg.getAttribute("data-original")); 
  26. function aftLoadImg(obj,url){ 
  27. var oImg = new Image(); 
  28. oImg.onload = function(){ 
  29. obj.src = oImg.src; 
  30. oImg.src = url
  31. </script> 
  32. </body> 
  33. </html>

【可視區(qū)顯示圖片】

  1. <!DOCTYPE html> 
  2. <html lang="en"
  3. <head> 
  4. <meta charset="UTF-8"
  5. <title>Document</title> 
  6. <style> 
  7. body{ 
  8. margin: 0
  9. ul{ 
  10. margin: 0
  11. padding: 0
  12. list-style: none; 
  13. img{ 
  14. border: none; 
  15. vertical-align: middle; 
  16. .in{ 
  17. border: 1px solid black; 
  18. margin: 10px; 
  19. text-align: center; 
  20. height: 400px; 
  21. width: 400px; 
  22. float: left; 
  23. .in img{ 
  24. height: 400px; 
  25. width: 400px; 
  26. </style> 
  27. </head> 
  28. <body> 
  29. <ul class="list"
  30. <li class="in"><img src="img/loading.gif" alt="測(cè)試" data-original = "img/img1.gif"></li> 
  31. <li class="in"><img src="img/loading.gif" alt="測(cè)試" data-original = "img/img2.gif"></li> 
  32. <li class="in"><img src="img/loading.gif" alt="測(cè)試" data-original = "img/img3.gif"></li> 
  33. <li class="in"><img src="img/loading.gif" alt="測(cè)試" data-original = "img/img4.gif"></li> 
  34. <li class="in"><img src="img/loading.gif" alt="測(cè)試" data-original = "img/img1.gif"></li> 
  35. <li class="in"><img src="img/loading.gif" alt="測(cè)試" data-original = "img/img2.gif"></li> 
  36. <li class="in"><img src="img/loading.gif" alt="測(cè)試" data-original = "img/img3.gif"></li> 
  37. <li class="in"><img src="img/loading.gif" alt="測(cè)試" data-original = "img/img4.gif"></li> 
  38. </ul> 
  39.  
  40. <script> 
  41. var oBtn = document.getElementsByTagName('button')[0]; 
  42. var aImages = document.images; 
  43. loadImg(aImages); 
  44. window.onscroll = function(){ 
  45. loadImg(aImages); 
  46. }; 
  47. function loadImg(arr){ 
  48. for( var i = 0,len = arr.length; i < len; i++){ 
  49. if(arr[i].getBoundingClientRect().top < document.documentElement.clientHeight && !arr[i].isLoad){ 
  50. arr[i].isLoad = true
  51. arr[i].style.cssText = "transition: ''; opacity: 0;" 
  52. if(arr[i].dataset){ 
  53. aftLoadImg(arr[i],arr[i].dataset.original); 
  54. }else
  55. aftLoadImg(arr[i],arr[i].getAttribute("data-original")); 
  56. (function(i){ 
  57. setTimeout(function(){ 
  58. arr[i].style.cssText = "transition: 1s; opacity: 1;" 
  59. },16
  60. })(i); 
  61. function aftLoadImg(obj,url){ 
  62. var oImg = new Image(); 
  63. oImg.onload = function(){ 
  64. obj.src = oImg.src; 
  65. oImg.src = url; 
  66.  
  67. </script> 
  68. </body> 
  69. </html> 

 

責(zé)任編輯:chenqingxiang 來(lái)源: 博客園
相關(guān)推薦

2020-11-18 09:30:29

圖片懶加載前端瀏覽器

2024-04-23 09:35:27

線程終止C#多線程編程

2021-03-19 06:31:06

vue-lazyloa圖片懶加載項(xiàng)目

2018-08-02 14:08:47

小程序javascriptlazyload

2019-09-09 09:05:59

圖片框架懶加載

2010-03-09 13:54:05

Linux find命

2011-11-21 12:56:10

Java代理模式設(shè)計(jì)模式

2019-12-10 08:59:55

JVM內(nèi)存算法

2024-03-20 09:31:00

圖片懶加載性能優(yōu)化React

2017-03-28 10:11:12

Webpack 2React加載

2021-08-16 12:32:37

HashMap八股文面試

2009-07-03 16:45:25

JSP實(shí)用教程

2011-01-17 19:35:04

javascriptjqueryweb

2022-06-07 08:18:49

懶加載Web前端

2015-10-29 10:50:46

Android架構(gòu)設(shè)計(jì)原則

2010-08-12 14:20:41

CISCO常見問(wèn)題

2025-02-11 07:40:27

2015-08-03 10:50:48

高能預(yù)警虛擬化運(yùn)維

2009-08-01 08:50:25

Windows 7系統(tǒng)改進(jìn)

2020-03-31 18:47:22

機(jī)器學(xué)習(xí)ML應(yīng)用程序
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)