图片懒加载

亦凉 2022-05-23 12:19 648阅读 0赞
  1. <!--<!doctype html>-->
  2. <!--<html lang="en">-->
  3. <!--<head>-->
  4. <!--<meta charset="UTF-8">-->
  5. <!--<meta name="viewport"-->
  6. <!--content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">-->
  7. <!--<meta http-equiv="X-UA-Compatible" content="ie=edge">-->
  8. <!--<title>Document</title>-->
  9. <!--<style>-->
  10. <!--.wrap{-->
  11. <!--width: 500px;-->
  12. <!--margin: 200px auto;-->
  13. <!--overflow:hidden;-->
  14. <!--}-->
  15. <!--.page{-->
  16. <!--height:600px;-->
  17. <!--background: red;-->
  18. <!--overflow:auto;-->
  19. <!--}-->
  20. <!--</style>-->
  21. <!--</head>-->
  22. <!--<body>-->
  23. <!--<div class="warp">-->
  24. <!--<div class="page">-->
  25. <!--<p><img src="img/loading.gif" data-src="img/1.jpg" alt=""></p>-->
  26. <!--<p><img src="img/loading.gif" data-src="img/2.jpg" alt=""></p>-->
  27. <!--<p><img src="img/loading.gif" data-src="img/3.jpg" alt=""></p>-->
  28. <!--<p><img src="img/loading.gif" data-src="img/4.jpg" alt=""></p>-->
  29. <!--<p><img src="img/loading.gif" data-src="img/5.jpg" alt=""></p>-->
  30. <!--<p><img src="img/loading.gif" data-src="img/6.jpg" alt=""></p>-->
  31. <!--<p><img src="img/loading.gif" data-src="img/7.jpg" alt=""></p>-->
  32. <!--<p><img src="img/loading.gif" data-src="img/8.jpg" alt=""></p>-->
  33. <!--<p><img src="img/loading.gif" data-src="img/9.jpg" alt=""></p>-->
  34. <!--</div>-->
  35. <!--</div>-->
  36. <!--<script>-->
  37. <!--var scrollElement=document.querySelector('.page')-->
  38. <!--viewH=document.documentElement.clientHeight;-->
  39. <!--function lazyload() {-->
  40. <!--var nodes=document.querySelectorAll('img[data-src]')-->
  41. <!--Array.prototype.forEach.call(nodes,function (item,index) {-->
  42. <!--var rect;-->
  43. <!--if(item.dataset.src=='') return;-->
  44. <!--rect=item.getBoundingClientRect();-->
  45. <!--if(rect.bottom >=0 && rect.top < viewH){-->
  46. <!--(function (item) {-->
  47. <!--var img=new Image();-->
  48. <!--img.onload=function () {-->
  49. <!--item.src=img.src;-->
  50. <!--}-->
  51. <!--img.src=item.dataset.src;-->
  52. <!--item.dataset.src=''-->
  53. <!--})(item)-->
  54. <!--}-->
  55. <!--})-->
  56. <!--}-->
  57. <!--lazyload();-->
  58. <!--scrollElement.addEventListener('scroll',throttle(lazyload,500,1000))-->
  59. <!--function throttle(fun,delay,time) {-->
  60. <!--var timeout,-->
  61. <!--startTime=new Date()-->
  62. <!--return function () {-->
  63. <!--var context=this,-->
  64. <!--args=arguments,-->
  65. <!--curTime=new Date();-->
  66. <!--clearTimeout(timeout);-->
  67. <!--if(curTime-startTime >= time){-->
  68. <!--fun.apply(context,args);-->
  69. <!--startTime=curTime;-->
  70. <!--}else {-->
  71. <!--timeout=setTimeout(fun,delay);-->
  72. <!--}-->
  73. <!--}-->
  74. <!--}-->
  75. <!--</script>-->
  76. <!--</body>-->
  77. <!--</html>-->
  78. <!DOCTYPE html>
  79. <html lang="en">
  80. <head>
  81. <meta charset="UTF-8">
  82. <title>Document</title>
  83. <style> body{ margin: 0; } ul{ margin: 0; padding: 0; list-style: none; } img{ border: none; vertical-align: middle; } .in{ border: 1px solid black; margin: 10px; text-align: center; height: 400px; width: 400px; float: left; } .in img{ height: 400px; width: 400px; } </style>
  84. </head>
  85. <body>
  86. <ul class="list">
  87. <li class="in"><img src="img/loading.gif" alt="测试" data-original = "img/1.jpg"></li>
  88. <li class="in"><img src="img/loading.gif" alt="测试" data-original = "img/1.jpg"></li>
  89. <li class="in"><img src="img/loading.gif" alt="测试" data-original = "img/1.jpg"></li>
  90. <li class="in"><img src="img/loading.gif" alt="测试" data-original = "img/1.jpg"></li>
  91. <li class="in"><img src="img/loading.gif" alt="测试" data-original = "img/1.jpg"></li>
  92. <li class="in"><img src="img/loading.gif" alt="测试" data-original = "img/1.jpg"></li>
  93. <li class="in"><img src="img/loading.gif" alt="测试" data-original = "img/1.jpg"></li>
  94. <li class="in"><img src="img/loading.gif" alt="测试" data-original = "img/1.jpg"></li>
  95. <li class="in"><img src="img/loading.gif" alt="测试" data-original = "img/1.jpg"></li>
  96. <li class="in"><img src="img/loading.gif" alt="测试" data-original = "img/1.jpg"></li>
  97. <li class="in"><img src="img/loading.gif" alt="测试" data-original = "img/1.jpg"></li>
  98. <li class="in"><img src="img/loading.gif" alt="测试" data-original = "img/1.jpg"></li>
  99. <li class="in"><img src="img/loading.gif" alt="测试" data-original = "img/1.jpg"></li>
  100. <li class="in"><img src="img/loading.gif" alt="测试" data-original = "img/1.jpg"></li>
  101. </ul>
  102. <script> var oBtn = document.getElementsByTagName('button')[0]; var aImages = document.images; loadImg(aImages); window.onscroll = function(){ loadImg(aImages); }; function loadImg(arr){ for( var i = 0,len = arr.length; i < len; i++){ if(arr[i].getBoundingClientRect().top < document.documentElement.clientHeight && !arr[i].isLoad){ arr[i].isLoad = true; arr[i].style.cssText = "transition: ''; opacity: 0;" if(arr[i].dataset){ aftLoadImg(arr[i],arr[i].dataset.original); }else{ aftLoadImg(arr[i],arr[i].getAttribute("data-original")); } (function(i){ setTimeout(function(){ arr[i].style.cssText = "transition: 1s; opacity: 1;" },16) })(i); } } } function aftLoadImg(obj,url){ var oImg = new Image(); oImg.onload = function(){ obj.src = oImg.src; } oImg.src = url; } </script>
  103. </body>
  104. <!--<head>-->
  105. <!--<meta charset="UTF-8">-->
  106. <!--<title>Document</title>-->
  107. <!--<style>-->
  108. <!--img {-->
  109. <!--display: block;-->
  110. <!--margin-bottom: 50px;-->
  111. <!--width: 400px;-->
  112. <!--height: 400px;-->
  113. <!--}-->
  114. <!--</style>-->
  115. <!--</head>-->
  116. <!--<body>-->
  117. <!--<img src="img/loading.gif" data-src="img/1.jpg" alt="">-->
  118. <!--<img src="img/loading.gif" data-src="img/1.jpg" alt="">-->
  119. <!--<img src="img/loading.gif" data-src="img/1.jpg" alt="">-->
  120. <!--<img src="img/loading.gif" data-src="img/1.jpg" alt="">-->
  121. <!--<img src="img/loading.gif" data-src="img/1.jpg" alt="">-->
  122. <!--<img src="img/loading.gif" data-src="img/1.jpg" alt="">-->
  123. <!--<img src="img/loading.gif" data-src="img/1.jpg" alt="">-->
  124. <!--<img src="img/loading.gif" data-src="img/1.jpg" alt="">-->
  125. <!--<img src="img/loading.gif" data-src="img/1.jpg" alt="">-->
  126. <!--<img src="img/loading.gif" data-src="img/1.jpg" alt="">-->
  127. <!--<img src="img/loading.gif" data-src="img/1.jpg" alt="">-->
  128. <!--<script>-->
  129. <!--var num = document.getElementsByTagName('img').length;-->
  130. <!--var img = document.getElementsByTagName("img");-->
  131. <!--var n = 0; //存储图片加载到的位置,避免每次都从第一张图片开始遍历-->
  132. <!--lazyload(); //页面载入完毕加载可是区域内的图片-->
  133. <!--window.onscroll = lazyload;-->
  134. <!--function lazyload() { //监听页面滚动事件-->
  135. <!--var seeHeight = document.documentElement.clientHeight; //可见区域高度-->
  136. <!--var scrollTop = document.documentElement.scrollTop || document.body.scrollTop; //滚动条距离顶部高度-->
  137. <!--for (var i = n; i < num; i++) {-->
  138. <!--if (img[i].offsetTop < seeHeight + scrollTop) {-->
  139. <!--if (img[i].getAttribute("src") == "default.jpg") {-->
  140. <!--img[i].src = img[i].getAttribute("data-src");-->
  141. <!--}-->
  142. <!--n = i + 1;-->
  143. <!--}-->
  144. <!--}-->
  145. <!--}-->
  146. <!--function throttle(fun, delay, time) {-->
  147. <!--var timeout,-->
  148. <!--startTime = new Date();-->
  149. <!--return function() {-->
  150. <!--var context = this,-->
  151. <!--args = arguments,-->
  152. <!--curTime = new Date();-->
  153. <!--clearTimeout(timeout);-->
  154. <!--// 如果达到了规定的触发时间间隔,触发 handler-->
  155. <!--if (curTime - startTime >= time) {-->
  156. <!--fun.apply(context, args);-->
  157. <!--startTime = curTime;-->
  158. <!--// 没达到触发间隔,重新设定定时器-->
  159. <!--} else {-->
  160. <!--timeout = setTimeout(fun, delay);-->
  161. <!--}-->
  162. <!--};-->
  163. <!--};-->
  164. <!--// 实际想绑定在 scroll 事件上的 handler-->
  165. <!--function lazyload(event) {}-->
  166. <!--// 采用了节流函数-->
  167. <!--window.addEventListener('scroll',throttle(lazyload,500,1000));-->
  168. <!--</script>-->
  169. <!--</body>-->
  170. </html>

发表评论

表情:
评论列表 (有 0 条评论,648人围观)

还没有评论,来说两句吧...

相关阅读

    相关 图片

    在一个项目中,如果同时加载的图片太多的话,会导致页面卡顿,这个时候就会用到懒加载。懒加载的实现原理是监听浏览器的滚动条事件,先加载出前面几张图片,然后当滚动条滚动的时候再依次加

    相关 图片

    懒加载的意义[(在线demo预览)][demo] 尽管很多公司的网页都有一些限制,比如页面的最大的图片大小不得大于50k,也有很多图片优化工具fis3、gulp等等,但是

    相关 图片

    在实际的项目开发中,我们通常会遇见这样的场景:一个页面有很多图片,而首屏出现的图片大概就一两张,那么我们还要一次性把所有图片都加载出来吗?显然这是愚蠢的,不仅影响页面渲染速度,