时间:2021-05-18
js懒加载图片
如何提高网页加载速度?在网页中有许多img标签,这些标签就是图片,其属性src则是指向服务器地址,当浏览器从上往下读取到src标签中的地址时,浏览器就会开启线程,加载这张图片。而并不是等到整张页面都解析完成才加载图片。我们要做的就是加载用户可视范围内的图片。
js懒加载图片的目的
1.网页优化,提高网页加载速度
2.页面优化友好,提高SEO收录与排名
3.提高用户体验,减少服务器压力
实例代码如下:
<!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8"> <title>图片懒加载(可视区域加载)</title> <style> * { padding: 0px; margin: 0px; } html, body { width: 100%; min-height: 100%; } #SB { margin: 0; padding: 0; list-style: none; } #SB .in { border: 1px solid red; margin: 10px; text-align: center; height: 400px; width: 400px; float: left; } .in img { border: none; vertical-align: middle; height: 400px; width: 400px; } </style> </head> <body> <ul id="SB"> <li class="in"><img src="" data-imgurl="img/1.jpg"></li> <li class="in"><img src="" data-imgurl="img/2.jpg"></li> <li class="in"><img src="" data-imgurl="img/3.jpg"></li> <li class="in"><img src="" data-imgurl="img/4.jpg"></li> <li class="in"><img src="" data-imgurl="img/5.jpg"></li> <li class="in"><img src="" data-imgurl="img/6.jpg"></li> <li class="in"><img src="" data-imgurl="img/7.jpg"></li> <li class="in"><img src="" data-imgurl="img/8.jpg"></li> <li class="in"><img src="" data-imgurl="img/9.jpg"></li> <li class="in"><img src="" data-imgurl="img/10.jpg"></li> <li class="in"><img src="" data-imgurl="img/11.jpg"></li> <li class="in"><img src="" data-imgurl="img/12.jpg"></li> <li class="in"><img src="" data-imgurl="img/13.jpg"></li> <li class="in"><img src="" data-imgurl="img/14.jpg"></li> <li class="in"><img src="" data-imgurl="img/15.jpg"></li> <li class="in"><img src="" data-imgurl="img/16.jpg"></li> <li class="in"><img src="" data-imgurl="img/1.jpg"></li> <li class="in"><img src="" data-imgurl="img/2.jpg"></li> <li class="in"><img src="" data-imgurl="img/3.jpg"></li> <li class="in"><img src="" data-imgurl="img/4.jpg"></li> <li class="in"><img src="" data-imgurl="img/5.jpg"></li> <li class="in"><img src="" data-imgurl="img/6.jpg"></li> <li class="in"><img src="" data-imgurl="img/7.jpg"></li> <li class="in"><img src="" data-imgurl="img/8.jpg"></li> <li class="in"><img src="" data-imgurl="img/9.jpg"></li> <li class="in"><img src="" data-imgurl="img/10.jpg"></li> <li class="in"><img src="" data-imgurl="img/11.jpg"></li> <li class="in"><img src="" data-imgurl="img/12.jpg"></li> <li class="in"><img src="" data-imgurl="img/13.jpg"></li> <li class="in"><img src="" data-imgurl="img/14.jpg"></li> <li class="in"><img src="" data-imgurl="img/15.jpg"></li> <li class="in"><img src="" data-imgurl="img/16.jpg"></li> <li class="in"><img src="" data-imgurl="img/1.jpg"></li> <li class="in"><img src="" data-imgurl="img/2.jpg"></li> <li class="in"><img src="" data-imgurl="img/3.jpg"></li> <li class="in"><img src="" data-imgurl="img/4.jpg"></li> <li class="in"><img src="" data-imgurl="img/5.jpg"></li> <li class="in"><img src="" data-imgurl="img/6.jpg"></li> <li class="in"><img src="" data-imgurl="img/7.jpg"></li> <li class="in"><img src="" data-imgurl="img/8.jpg"></li> <li class="in"><img src="" data-imgurl="img/9.jpg"></li> <li class="in"><img src="" data-imgurl="img/10.jpg"></li> <li class="in"><img src="" data-imgurl="img/11.jpg"></li> <li class="in"><img src="" data-imgurl="img/12.jpg"></li> <li class="in"><img src="" data-imgurl="img/13.jpg"></li> <li class="in"><img src="" data-imgurl="img/14.jpg"></li> <li class="in"><img src="" data-imgurl="img/15.jpg"></li> <li class="in"><img src="" data-imgurl="img/16.jpg"></li> </ul> <script type="text/javascript"> var aImages = document.getElementById("SB").getElementsByTagName('img'); //获取id为SB的文档内所有的图片 loadImg(aImages); window.onscroll = function() { //滚动条滚动触发 loadImg(aImages); }; //getBoundingClientRect 是图片懒加载的核心 function loadImg(arr) { for(var i = 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 = "opacity: 0;"; (function(i) { setTimeout(function() { if(arr[i].dataset) { //兼容不支持data的浏览器 aftLoadImg(arr[i], arr[i].dataset.imgurl); } else { aftLoadImg(arr[i], arr[i].getAttribute("data-imgurl")); } arr[i].style.cssText = "transition: 1s; opacity: 1;" //相当于fadein }, 500) })(i); } } } function aftLoadImg(obj, url) { var oImg = new Image(); oImg.onload = function() { obj.src = oImg.src; //下载完成后将该图片赋给目标obj目标对象 } oImg.src = url; //oImg对象先下载该图像 } </script> </body></html>总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
基于vue的懒加载插件目的:图片或者其他资源进入可视区域后加载安装使用直接下载dist目录下的vue-view-lazy.min.js使用使用npm安装直接使用
图片延迟加载也称懒加载,通常应用于图片比较多的网页,如果一个页面图片比较多,且页面高度或宽度有好几屏,页面初次加载时,只显示可视区域的图片,当页面滚动的时候,图
这篇文章主要介绍了JS图片懒加载的优点及实现原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下图片懒加载优势
各种网站经常看到页面滚动到可视区域,然后才加载相应的图片资源,他的本质是什么呢?本文来分析一下很简单,就是判断当前元素是否是可视区域内假设:h1=滚动条滚去的高
实现原理把所有需要延时加载的图片改成如下的格式:然后在页面加载时,把所有使用了lazy_src的图片都保存到数组里,然后在滚动时计算可视区域的top,然后把延时