实现图片懒加载
图片懒加载就是当页面需要展示较多图片时,首先只加载显示在当前屏幕位置的图片,在页面向下滚动时,再加载其他需要显示在当前屏幕位置的图片,这样可以防止一次性对服务器发送大量请求,并可以在用户不需要完整浏览页面的情况下减少服务器资源消耗。
实例
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 
 | <!DOCTYPE html><html>
 <head>
 <title>图片懒加载</title>
 <style type="text/css">
 .imgUnitContainer{
 height: 300px;
 width: 500px;
 overflow: hidden;
 border: 1px solid #eee;
 margin: 10px;
 display: flex;
 align-items: center;
 justify-content: center;
 }
 </style>
 </head>
 <body>
 <div id="container"></div>
 </body>
 <script type="text/javascript">
 var imgNodeList = [];
 (function(){
 var imgUrlArr = [
 "http://www.sdust.edu.cn/__local/9/7A/B1/F29B84DEF72DD329997E8172ABA_664BA3EF_32466.jpg",
 "http://www.sdust.edu.cn/__local/B/F3/E4/693AB931C9FFB84646970D53BFE_C506394A_4282CA.jpg",
 "http://www.sdust.edu.cn/__local/F/7A/AA/E1459849AA8AB0C89854A41BD41_BF3BD857_BC0D8.jpg",
 "http://www.sdust.edu.cn/__local/1/95/CB/EDC1450B8FD1B8A25FAAC726AA4_A36D4253_16C91.jpg",
 "http://www.sdust.edu.cn/__local/9/7A/B1/F29B84DEF72DD329997E8172ABA_664BA3EF_32466.jpg",
 "http://www.sdust.edu.cn/__local/B/F3/E4/693AB931C9FFB84646970D53BFE_C506394A_4282CA.jpg",
 "http://www.sdust.edu.cn/__local/F/7A/AA/E1459849AA8AB0C89854A41BD41_BF3BD857_BC0D8.jpg",
 "http://www.sdust.edu.cn/__local/1/95/CB/EDC1450B8FD1B8A25FAAC726AA4_A36D4253_16C91.jpg",
 "http://www.sdust.edu.cn/__local/9/7A/B1/F29B84DEF72DD329997E8172ABA_664BA3EF_32466.jpg",
 "http://www.sdust.edu.cn/__local/B/F3/E4/693AB931C9FFB84646970D53BFE_C506394A_4282CA.jpg",
 "http://www.sdust.edu.cn/__local/F/7A/AA/E1459849AA8AB0C89854A41BD41_BF3BD857_BC0D8.jpg",
 "http://www.sdust.edu.cn/__local/1/95/CB/EDC1450B8FD1B8A25FAAC726AA4_A36D4253_16C91.jpg",
 ];
 var innerContainer = document.createElement("div");
 imgUrlArr.forEach(v => {
 var imgUnitContainer = document.createElement("div");
 imgUnitContainer.className = "imgUnitContainer";
 var img = new Image();
 img.src = "https://cdn.jsdelivr.net/gh/sentsin/layui@15d7241/dist/css/modules/layer/default/loading-2.gif";
 img.setAttribute("data-src", v);
 img.setAttribute("loaded","no");
 imgNodeList.push(img);
 imgUnitContainer.appendChild(img);
 innerContainer.appendChild(imgUnitContainer);
 })
 document.getElementById("container").appendChild(innerContainer);
 })();
 
 function lazyLoad(){
 var height = window.innerHeight;
 var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
 imgNodeList.forEach(v => {
 if(v.getAttribute("loaded") === "yes") return ;
 if((height + scrollTop) > v.offsetTop){
 v.setAttribute("loaded", "yes");
 var tmp = new Image();
 tmp.src = v.getAttribute("data-src");
 tmp.onload = function(){
 v.src = v.getAttribute("data-src");
 }
 }
 })
 }
 
 window.onscroll = function(){
 lazyLoad();
 }
 
 window.onload = function(){
 lazyLoad();
 }
 
 </script>
 </html>
 
 |