实现图片懒加载
图片懒加载就是当页面需要展示较多图片时,首先只加载显示在当前屏幕位置的图片,在页面向下滚动时,再加载其他需要显示在当前屏幕位置的图片,这样可以防止一次性对服务器发送大量请求,并可以在用户不需要完整浏览页面的情况下减少服务器资源消耗。
实例
1 2 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>
|