图片懒加载(js版)
使用JavaScript实现图片懒加载
html
1 <body> 2 <div class="img"> 3 <img src="./loading.gif" data-lazyload="https://dpic3.tiankong.com/67/cn/QJ6226943363.jpg@!350h"> 4 <img src="./loading.gif" data-lazyload="https://dpic1.tiankong.com/zt/sg/QJ6235849453.jpg@!350h"> 5 <img src="./loading.gif" data-lazyload="https://dpic1.tiankong.com/ul/ac/QJ6479383109.jpg@!350h"> 6 <img src="./loading.gif" data-lazyload="https://dpic2.tiankong.com/1z/kb/QJ6401246638.jpg@!350h"> 7 <img src="./loading.gif" data-lazyload="https://dpic1.tiankong.com/ut/zj/QJ6634256101.jpg@!350h"> 8 <img src="./loading.gif" data-lazyload="https://dpic.tiankong.com/09/jh/QJ6635714192.jpg@!350h"> 9 <img src="./loading.gif" data-lazyload="https://dpic3.tiankong.com/6k/i5/QJ6727412259.jpg@!350h"> 10 <img src="./loading.gif" data-lazyload="https://dpic2.tiankong.com/av/fc/QJ6872601378.jpg@!350h"> 11 <img src="./loading.gif" data-lazyload="https://dpic.tiankong.com/37/1u/QJ7100086664.jpg@!350h"> 12 <img src="./loading.gif" data-lazyload="https://dpic1.tiankong.com/jt/7l/QJ7100510973.jpg@!350h"> 13 </div> 14 </body>
js
1 <script> 2 // 简单版 3 // // 监听滚动条事件 4 // $(window).on('scroll', () => { 5 // // 设置延时函数,防止加载过快,减轻服务器负担;为了效果明显,设置两秒延时 6 // setTimeout(() => { 7 // // 执行获取图片函数 8 // getImg(); 9 // },2000); 10 // }) 11 // 12 // // 获取图片函数 13 // function getImg() { 14 // // 遍历图片元素 15 // $('.img img').each((index, item) => { 16 // // 判断每一个图片元素是否在可视区域 17 // if($(item).offset().top <= $(window).height() + $(window).scrollTop()) { 18 // // 把暂存器data-lazyload的值赋值给img标签的src 19 // $(item).attr('src', $(item).attr('data-lazyload')) 20 // } 21 // }) 22 // } 23 24 // 升级版 25 // 第一次加载 26 getImg(); 27 28 var clock; // 设置一个延时函数节流 29 30 $(window).on('scroll', () => { 31 if (clock) { 32 // 如果拉动滚动条时,延时函数还未执行完,则清除 33 clearTimeout(clock); 34 } 35 clock = setTimeout(() => { 36 getImg(); 37 }, 2000) 38 }) 39 40 function getImg() { 41 // 返回没有data-isLoaded的img标签 42 // [1,2,3].not(1) => 返回不含有1的数组 [2,3] 43 $('.img img').not('[data-isLoading]').each((index,item) => { 44 if(isShow(item)) loading(item); 45 }) 46 } 47 48 function isShow(img) { 49 return $(img).offset().top <= $(window).height() + $(window).scrollTop() 50 } 51 52 function loading(img) { 53 $(img).attr('src', $(img).attr('data-lazyload')); 54 // 为已经加载的图片加一个标识,上面遍历图片的时候就会跳过已经加载了的图片 55 $(img).attr('data-isLoaded', 1); 56 } 57 </script>

浙公网安备 33010602011771号