基于javascript实现图片懒加载
一、定义
图片延迟加载也称为懒加载,延迟加载图片或符合某些条件时才加载某些图片,通常用于图片比较多的网页。可以减少请求数或者延迟请求数,优化性能。
二、呈现形式
【1】延时加载,使用setTimeout或setInterval进行加载延迟,如果用户在加载前就离开,自然就不会进行加载。
【2】条件加载,符合某些条件或者触发了某些条件才开始异步加载。
【3】可视区域加载,仅仅加载用户可以看到的区域,这个主要监控滚动条来实现,一般距离用户看到的底边很近的时候开始加载,这样能保证用户下拉时图片正好接上,不会有太长时间的停顿。
三、基本步骤
【1】网页中的图片都设为同一张图片
【2】给图片增加data-original="img/test.jpg"的属性,保存图片的真实地址
【3】当触发某些条件时,自动改变该区域的图片的src属性为真实的地址
四、应用
1、点击按钮显示图片
<!DOCTYPEhtml> <htmllang="en"> <head> <metacharset="UTF-8"> <title>Document</title> <style> body{ margin:0; } img{ height:100px; width:100px; } </style> </head> <body> <button>加载图片</button> <imgsrc="#"alt="测试"data-original="img/test.png"> <script> varoBtn=document.getElementsByTagName('button')[0]; varoImg=document.images[0]; oBtn.onclick=function(){ oImg.src="img/loading.gif"; if(oImg.dataset){ aftLoadImg(oImg,oImg.dataset.original); }else{ aftLoadImg(oImg,oImg.getAttribute("data-original")); } } functionaftLoadImg(obj,url){ varoImg=newImage(); oImg.onload=function(){ obj.src=oImg.src; } oImg.src=url; } </script> </body> </html>
2、可视区显示图片
<!DOCTYPEhtml> <htmllang="en"> <head> <metacharset="UTF-8"> <title>Document</title> <style> body{ margin:0; } ul{ margin:0; padding:0; list-style:none; } img{ border:none; vertical-align:middle; } .in{ border:1pxsolidblack; margin:10px; text-align:center; height:400px; width:400px; float:left; } .inimg{ height:400px; width:400px; } </style> </head> <body> <ulclass="list"> <liclass="in"><imgsrc="img/loading.gif"alt="测试"data-original="img/img1.gif"></li> <liclass="in"><imgsrc="img/loading.gif"alt="测试"data-original="img/img2.gif"></li> <liclass="in"><imgsrc="img/loading.gif"alt="测试"data-original="img/img3.gif"></li> <liclass="in"><imgsrc="img/loading.gif"alt="测试"data-original="img/img4.gif"></li> <liclass="in"><imgsrc="img/loading.gif"alt="测试"data-original="img/img1.gif"></li> <liclass="in"><imgsrc="img/loading.gif"alt="测试"data-original="img/img2.gif"></li> <liclass="in"><imgsrc="img/loading.gif"alt="测试"data-original="img/img3.gif"></li> <liclass="in"><imgsrc="img/loading.gif"alt="测试"data-original="img/img4.gif"></li> </ul> <script> varoBtn=document.getElementsByTagName('button')[0]; varaImages=document.images; loadImg(aImages); window.onscroll=function(){ loadImg(aImages); }; functionloadImg(arr){ for(vari=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); } } } functionaftLoadImg(obj,url){ varoImg=newImage(); oImg.onload=function(){ obj.src=oImg.src; } oImg.src=url; } </script> </body> </html>
以上就是本文的全部内容,希望对大家的学习有所帮助,顺利实现javascript图片懒加载。