定义

图片懒加载又称图片延时加载、惰性加载,即在用户需要使用图片的时候加载,这样可以减少请求,节省带宽,提高页面加载速度,相对的,也能减少服务器压力。
惰性加载是程序人性化的一种体现,提高用户体验,防止一次性加载大量数据,而是根据用户需要进行资源的请求。
实现
懒加载的难点在于确定某张图片是否是用户需要的资源,在浏览器中,用户需要的是可视区内的资源,因此我们只需要判断图片是否已经呈现在可视区内,当图片呈现在可视区内时,获取图片的真实地址并赋给该图片即可(图片宽高需要指定,可以利用padding处理)。
判断是否存在于可视区
浏览器视口高度
待加载资源距离视口顶端位置
通过以上两点即可判断图片是否位于可视区内。
var nodes = document.querySelectorAll('img[data-src]'),
elem = nodes[0],
rect = elem.getBoundingClientRect(),
vpHeight = document.documentElement.clientHeight;
if(rect.top < vpHeight && rect.bottom>=0) {
console.log('show')
}
之后获取图片的真实地址
<img src="loading.gif" alt="" data-src="1.gif"> ... <script data-filtered="filtered"> var src = elem.dataset.src; </script>
把真实地址赋给图片
var img = new Image();
img.onload = function(){
elem.src = img.src;
}
img.src = src;
完整代码
var scrollElement = document.querySelector('.page'),
viewH = document.documentElement.clientHeight;
function lazyload(){
var nodes = document.querySelectorAll('img[data-src]');
Array.prototype.forEach.call(nodes,function(item,index){
var rect;
if(item.dataset.src==='') return;
rect = item.getBoundingClientRect();
if(rect.bottom>=0 && rect.top < viewH){
(function(item){
var img = new Image();
img.onload = function(){
item.src = img.src;
}
img.src = item.dataset.src
item.dataset.src = ''
})(item)
}
})
}
lazyload();
scrollElement.addEventListener('scroll',throttle(lazyload,500,1000));
function throttle(fun, delay, time) {
var timeout,
startTime = new Date();
return function() {
var context = this,
args = arguments,
curTime = new Date();
clearTimeout(timeout);
if (curTime - startTime >= time) {
fun.apply(context, args);
startTime = curTime;
} else {
timeout = setTimeout(fun, delay);
}
};
};
总结
以上所述是小编给大家介绍的前端图片懒加载(lazyload)的实现方法(提高用户体验),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# 图片懒加载lazyload
# 前端必会的图片懒加载(三种方式)
# js前端实现图片懒加载(lazyload)的两种方式
# 前端JS图片懒加载原理方案详解
# 前端图片懒加载的原理与3种实现方式举例
# 加载
# 区内
# 小编
# 呈现在
# 的是
# 在此
# 也能
# 给大家
# 只需要
# 可以利用
# 所述
# 即在
# 给我留言
# 感谢大家
# 可以减少
# 两点
# 判断是否
# 疑问请
# 有任何
# 器中
相关文章:
设计网站制作公司有哪些,制作网页教程?
c# 在高并发下使用反射发射(Reflection.Emit)的性能
电商平台网站制作流程,电商网站如何制作?
如何用花生壳三步快速搭建专属网站?
网站制作知乎推荐,想做自己的网站用什么工具比较好?
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
制作网站的模板软件,网站怎么建设?
学校建站服务器如何选型才能满足性能需求?
如何设计高效校园网站?
高防服务器:AI智能防御DDoS攻击与数据安全保障
建站之星客服服务时间及联系方式如何?
免费ppt制作网站,有没有值得推荐的免费PPT网站?
建站之星后台密码遗忘?如何快速找回?
可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?
如何高效生成建站之星成品网站源码?
如何用已有域名快速搭建网站?
网站设计制作企业有哪些,抖音官网主页怎么设置?
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
如何选择高效便捷的WAP商城建站系统?
高防服务器租用首荐平台,企业级优惠套餐快速部署
GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?
如何选择高效可靠的多用户建站源码资源?
如何在Golang中指定模块版本_使用go.mod控制版本号
如何通过虚拟主机快速完成网站搭建?
定制建站平台哪家好?企业官网搭建与快速建站方案推荐
官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站
如何在阿里云域名上完成建站全流程?
建站之星后台管理系统如何操作?
子杰智能建站系统|零代码开发与AI生成SEO优化指南
如何快速启动建站代理加盟业务?
番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?
香港服务器选型指南:免备案配置与高效建站方案解析
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
如何快速搭建高效可靠的建站解决方案?
如何获取PHP WAP自助建站系统源码?
制作网站的过程怎么写,用凡科建站如何制作自己的网站?
如何在西部数码注册域名并快速搭建网站?
建站主机数据库如何配置才能提升网站性能?
网站制作的方法有哪些,如何将自己制作的网站发布到网上?
装修招标网站设计制作流程,装修招标流程?
制作公司内部网站有哪些,内网如何建网站?
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
建站主机如何安装配置?新手必看操作指南
c++ stringstream用法详解_c++字符串与数字转换利器
如何制作算命网站,怎么注册算命网站?
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
如何通过PHP快速构建高效问答网站功能?
制作网站的基本流程,设计网站的软件是什么?
seo网站制作优化,网站SEO优化步骤有哪些?
*请认真填写需求信息,我们会在24小时内与您取得联系。