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>
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# js
# 图片懒加载原理
# 懒加载
# js实现图片懒加载
# js获取滚动距离的方法
# js/jquery获取浏览器窗口可视区域高度和宽度以及滚动条高度实现代码
# js获取浏览器的可视区域尺寸的实现代码
# js获取元素到可视区的距离、浏览器窗口滚动距离及元素距离浏览器顶部距离
# 加载
# 就会
# 则是
# 中有
# 这张
# 要做
# 不支持
# 这篇文章
# 谢谢大家
# 往下
# 将该
# 整张
# 滚动条
# 文档
# 完成后
# 有疑问
# margin
# title
# padding
# px
相关文章:
如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?
,石家庄四十八中学官网?
建站之星导航配置指南:自助建站与SEO优化全解析
如何快速搭建高效可靠的建站解决方案?
C#怎么使用委托和事件 C# delegate与event编程方法
如何通过网站建站时间优化SEO与用户体验?
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
建站之星后台管理:高效配置与模板优化提升用户体验
网站制作网站,深圳做网站哪家比较好?
高端企业智能建站程序:SEO优化与响应式模板定制开发
建站之星代理如何优化在线客服效率?
,怎么用自己头像做动态表情包?
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
安徽网站建设与外贸建站服务专业定制方案
宝塔建站助手安装配置与建站模板使用全流程解析
独立制作一个网站多少钱,建立网站需要花多少钱?
建站主机类型有哪些?如何正确选型
建站主机选虚拟主机还是云服务器更好?
打鱼网站制作软件,波克捕鱼官方号怎么注册?
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
如何在IIS7上新建站点并设置安全权限?
如何快速登录WAP自助建站平台?
如何快速查询网站的真实建站时间?
如何用虚拟主机快速搭建网站?详细步骤解析
如何通过商城免费建站系统源码自定义网站主题?
如何解决ASP生成WAP建站中文乱码问题?
微信推文制作网站有哪些,怎么做微信推文,急?
建站之星IIS配置教程:代码生成技巧与站点搭建指南
网站制作费用多少钱,一个网站的运营,需要哪些费用?
义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
湖州网站制作公司有哪些,浙江中蓝新能源公司官网?
湖北网站制作公司有哪些,湖北清能集团官网?
如何选择美橙互联多站合一建站方案?
5种Android数据存储方式汇总
教育培训网站制作流程,请问edu教育网站的域名怎么申请?
建站之星3.0如何解决常见操作问题?
宝塔新建站点报错如何解决?
如何在阿里云购买域名并搭建网站?
高防服务器:AI智能防御DDoS攻击与数据安全保障
如何解决VPS建站LNMP环境配置常见问题?
如何在香港免费服务器上快速搭建网站?
建站之星安装路径如何正确选择及配置?
建站之星Pro快速搭建教程:模板选择与功能配置指南
免费制作小说封面的网站有哪些,怎么接网站批量的封面单?
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
如何快速辨别茅台真假?关键步骤解析
建站之星如何保障用户数据免受黑客入侵?
微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?
如何在腾讯云免费申请建站?
*请认真填写需求信息,我们会在24小时内与您取得联系。