图片懒加载(延迟加载)
图片懒加载(延迟加载)的简单封装,使用jq1.8.3版本
图片懒加载(延迟加载):浏览器可视区域外的图片不会被载入,直到图片在可视区的时候,设置图片正真的路径,让图片显示出来。
效果:可以加快页面加载速度。减少浏览器的http请求,降低服务器负担。
1 function showImg(obj, callback) { 2 /*obj图片懒加载(范围)元素父级 3 * callback图片懒加载完成后的回调函数 4 * img标签结构 例<img src="通用的统一的默认图片链接" data_src="真正要展示的图片链接" err_src="图片呢加载失败后的链接"> 5 **/ 6 if (!obj) return; 7 /*获取滚动条的距离*/ 8 var wScroll = $(window).scrollTop(), 9 wHeight = $(window).height(); 10 11 showImg1(); 12 /*页面滚动的时候绑定事件, 13 * 在这里绑定的时候先解除事件绑定, 14 * 主要是showImg在重复调用的情况下 15 * */ 16 $(window).off('scroll', showImg1); 17 $(window).on('scroll', showImg1); 18 19 function showImg1() { 20 $(obj).find('img').each(function() { //遍历所有图片 21 //当前图片对象 22 var othis = $(this); 23 //当前图片距页面顶部距离 24 var offsTop = $(this).offset().top; 25 //当前图片高度 26 var tHeight = $(this).height(); 27 //页面可视区底部 28 var wBottom = wScroll + wHeight; 29 //当前图片底距顶部高度 30 var wTop = offsTop + tHeight; 31 32 //如果该图片在可视区可见 33 if (wBottom >= offsTop && wTop >=wScroll) { 34 //可见的时候并且存在自定义属性data_src,把占位值替换 并删除占位属性 35 if(othis.attr('data_src')){ 36 othis.attr('src', othis.attr('data_src')).removeAttr('data_src'); 37 //如果有需要,引用图片加载失败showImgError方法 38 showImgError(othis); 39 /*这里执行回调函数*/ 40 callback&&callback(); 41 } 42 } 43 }); 44 }; 45 /* 图片加载失败 46 * 这里如果图片懒加载失败,再次更换图片 47 * 图片标签中需要有 err_src='错误后图片链接' 的自定义属性 48 * */ 49 function showImgError(that){ 50 that.error(function(){ 51 if(that.attr('err_src')){ 52 that.attr('src', that.attr('err_src')).removeAttr('err_src'); 53 } 54 }); 55 } 56 }
浙公网安备 33010602011771号