定义

图片懒加载又称图片延时加载、惰性加载,即在用户需要使用图片的时候加载,这样可以减少请求,节省带宽,提高页面加载速度,相对的,也能减少服务器压力。
惰性加载是程序人性化的一种体现,提高用户体验,防止一次性加载大量数据,而是根据用户需要进行资源的请求。
实现
懒加载的难点在于确定某张图片是否是用户需要的资源,在浏览器中,用户需要的是可视区内的资源,因此我们只需要判断图片是否已经呈现在可视区内,当图片呈现在可视区内时,获取图片的真实地址并赋给该图片即可(图片宽高需要指定,可以利用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种实现方式举例
# 加载
# 区内
# 小编
# 呈现在
# 的是
# 在此
# 也能
# 给大家
# 只需要
# 可以利用
# 所述
# 即在
# 给我留言
# 感谢大家
# 可以减少
# 两点
# 判断是否
# 疑问请
# 有任何
# 器中
相关文章:
如何打造高效商业网站?建站目的决定转化率
企业微网站怎么做,公司网站和公众号有什么区别?
如何在建站宝盒中设置产品搜索功能?
php条件判断怎么写_ifelse和switchcase的使用区别【对比】
如何在景安服务器上快速搭建个人网站?
如何快速搭建高效服务器建站系统?
建站之星展会模板:智能建站与自助搭建高效解决方案
网站制作模板下载什么软件,ppt模板免费下载网站?
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
如何在Windows环境下新建FTP站点并设置权限?
如何在宝塔面板中修改默认建站目录?
如何在云指建站中生成FTP站点?
如何选择建站程序?包含哪些必备功能与类型?
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
Python文件管理规范_工程实践说明【指导】
php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】
常州企业网站制作公司,全国继续教育网怎么登录?
建站之星2.7模板:企业网站建设与h5定制设计专题
,sp开头的版面叫什么?
微网站制作教程,我微信里的网站怎么才能复制到浏览器里?
如何通过wdcp面板快速创建网站?
公司网站制作需要多少钱,找人做公司网站需要多少钱?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
c# F# 的 MailboxProcessor 和 C# 的 Actor 模型
湖北网站制作公司有哪些,湖北清能集团官网?
建站为何优先选择香港服务器?
实现点击下箭头变上箭头来回切换的两种方法【推荐】
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
建站之星Pro快速搭建教程:模板选择与功能配置指南
微课制作网站有哪些,微课网怎么进?
常州自助建站:操作简便模板丰富,企业个人快速搭建网站
如何零基础开发自助建站系统?完整教程解析
C#如何使用XPathNavigator高效查询XML
网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?
网站企业制作流程,用什么语言做企业网站比较好?
南平网站制作公司,2025年南平市事业单位报名时间?
盐城做公司网站,江苏电子版退休证办理流程?
济南网站建设制作公司,室内设计网站一般都有哪些功能?
如何用wdcp快速搭建高效网站?
网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?
测试制作网站有哪些,测试性取向的权威测试或者网站?
已有域名如何快速搭建专属网站?
,怎么用自己头像做动态表情包?
网站制作报价单模板图片,小松挖机官方网站报价?
linux top下的 minerd 木马清除方法
如何快速搭建高效WAP手机网站吸引移动用户?
制作网站的模板软件,网站怎么建设?
如何零基础在云服务器搭建WordPress站点?
建站中国官网:模板定制+SEO优化+建站流程一站式指南
*请认真填写需求信息,我们会在24小时内与您取得联系。