1.懒加载原理

在图片没有进入可视区域时,先给的src一个默认加载的图片,这样浏览器就不会发送请求了,等到图片进入可视区域再把真实的图片路径data-src给src。

2.具体实现

1. 效果

2. 代码如下:

<style>.imgList{width: 600px;}.lazy {width: 600px;}
</style>
<body><div class="imgList"><img class="lazy" src="/image/loading.jpg" data-src="/image/1.jpeg" /><img class="lazy" src="/image/loading.jpg" data-src="/image/2.jpeg" /><img class="lazy" src="/image/loading.jpg" data-src="/image/3.jpeg" /><img class="lazy" src="/image/loading.jpg" data-src="/image/4.jpeg" /><img class="lazy" src="/image/loading.jpg" data-src="/image/5.jpeg" /><img class="lazy" src="/image/loading.jpg" data-src="/image/6.jpeg" /><img class="lazy" src="/image/loading.jpg" data-src="/image/7.jpeg" /><img class="lazy" src="/image/loading.jpg" data-src="/image/8.jpeg" /><img class="lazy" src="/image/loading.jpg" data-src="/image/9.jpeg" /><img class="lazy" src="/image/loading.jpg" data-src="/image/10.jpeg" /><img class="lazy" src="/image/loading.jpg" data-src="/image/11.jpeg" /><img class="lazy" src="/image/loading.jpg" data-src="/image/1.jpeg" /><img class="lazy" src="/image/loading.jpg" data-src="/image/2.jpeg" /><img class="lazy" src="/image/loading.jpg" data-src="/image/3.jpeg" /><img class="lazy" src="/image/loading.jpg" data-src="/image/4.jpeg" /><img class="lazy" src="/image/loading.jpg" data-src="/image/5.jpeg" /><img class="lazy" src="/image/loading.jpg" data-src="/image/6.jpeg" /><img class="lazy" src="/image/loading.jpg" data-src="/image/7.jpeg" /><img class="lazy" src="/image/loading.jpg" data-src="/image/8.jpeg" /><img class="lazy" src="/image/loading.jpg" data-src="/image/9.jpeg" /><img class="lazy" src="/image/loading.jpg" data-src="/image/10.jpeg" /><img class="lazy" src="/image/loading.jpg" data-src="/image/11.jpeg" /></div>
</body>
<script>window.onload = function () {//onload:等所有资源文件加载完毕以后执行let imgs = document.querySelectorAll('.lazy')function lazyload() {// 可视区域的高度let viewHeight = document.documentElement.clientHeight;// 滚动条滚出去的高度let scrollTop = document.documentElement.scrollTop || document.body.scrollTop;for (let i = 0; i < imgs.length; i++) {//图片距离文档顶部的距离<滚动条故出去的高度+可视区域的高度(即需要加载的图面滚到可视区域了,就要进行懒加载了)if (imgs[i].offsetTop < viewHeight + scrollTop) {imgs[i].src = imgs[i].getAttribute('data-src')}}}lazyload();//页面一进来时加载//最好给滚动加一个节流函数function thorttle(fn,wait){let timer = nullreturn function(){if(!timer){timer = setTimeout(()=>{fn.call(this)timer = null},wait)}}}// 页面滚动时window.onscroll = thorttle(lazyload,500)}
</script>

js图片懒加载原理、实现及节流优化相关推荐

  1. [js] 图片懒加载

    懒加载使用场景 在一些图片量比较大的场景(电商首页,小程序首页等),如果我们打开页面时就加载所有的图片,那势必会导致页面的卡顿以及白屏,给用户不好的体验,导致用户流失. 但是我们仔细想一下,用户真的需 ...

  2. js实现图片懒加载原理(marksheng)

    有时候一个网页会包含很多的图片,例如淘宝京东这些购物网站,商品图片多只之又多,页面图片多,加载的图片就多.服务器压力就会很大.不仅影响渲染速度还会浪费带宽.比如一个1M大小的图片,并发情况下,达到10 ...

  3. js实现图片懒加载原理

    有时候一个网页会包含很多的图片,例如淘宝京东这些购物网站,商品图片多只之又多,页面图片多,加载的图片就多.服务器压力就会很大.不仅影响渲染速度还会浪费带宽.比如一个1M大小的图片,并发情况下,达到10 ...

  4. 使用jQuery实现图片懒加载原理

    在网页中,常常需要用到图片,而图片需要消耗较大的流量.正常情况下,浏览器会解析整个HTML代码,然后从上到下依次加载的图片标签.如果页面很长,隐藏在页面下方的图片其实已经被浏览器加载了.如果用户不向下 ...

  5. 懒加载实践--js图片懒加载及优化

    一.前言 为啥要对图片使用懒加载?我们首先来聊聊这个问题,对于页面来说架子啊速度影响着最大的就是图片,一张普通的图片可以达到4-5M的大小,而代码压缩也就只有几十KB.当页面图片过多的时候,页面加载速 ...

  6. js 图片懒加载最好的方法

    图片懒加载多种方法 第一种 是循环遍历img属性,判断每一个img离顶部的高度减去屏幕的高度是否大于0,小于0的话就就出现在屏幕上了,我们就更改属性显示图片,这种有弊端,因为是监听滚动条,相等于实时监 ...

  7. html图片懒加载,图片懒加载原理及实现

    原理: 先将img标签的src链接设为同一张图片(比如空白图片),然后给img标签设置自定义属性(比如 data-src),然后将真正的图片地址存储在data-src中,当JS监听到该图片元素进入可视 ...

  8. 图片懒加载原理及实现

    原理: 先将img标签的src链接设为同一张图片(比如空白图片),然后给img标签设置自定义属性(比如 data-src),然后将真正的图片地址存储在data-src中,当JS监听到该图片元素进入可视 ...

  9. js图片懒加载的第二种方式

    这种方式是图片按照顺序一张一张的加载直到所有图片都加载完成 html 同样的要让图片进行懒加载,路径引用就得用 data-src <ul><li><img data-sr ...

最新文章

  1. Android支付接入(五):机锋网
  2. 无线宝服务器连接不上,无线网络连接不上怎么办 为什么无线网络连接不上
  3. UA MATH524 复变函数5 代数运算、可微性与积分基础例题
  4. mybatis-generator运行报错Communications link failure
  5. [Unity优化]overdraw01:不可见遮罩
  6. 论文浅尝 - IJCAI2020 | Mucko:基于事实的多层跨模态知识推理视觉问答
  7. 使用fiddler的过滤条件
  8. 【C语言深入】[001] static 关键字:
  9. 话单分析账单分析行踪分析三合一数据分析
  10. Servlet面试题汇总
  11. C# chart控件使用方法
  12. Ubuntu 16.04 双网卡 同时上内外网
  13. tolua unity 报错_Unity手游开发札记——ToLua#集成内存泄露检查和性能检测工具
  14. vscode 添加版权信息
  15. mysql中的int(11)到底代表什么意思?
  16. 我国将大力发展装配式建筑 2025年装配式建筑占新建建筑比例将超30%
  17. ffmpeg将mov格式的视频转换成mp4格式
  18. python画多边形(八边形)
  19. 2032:【例4.18】分解质因数
  20. h5 每页打印固定表头以及表尾 解决表头过长打印分页表头不固定问题

热门文章

  1. vue- canvas生成海报图
  2. windows server2012 开启mysql远程访问
  3. Unity优化之遮挡剔除Occlusion Culling
  4. Linux系统或Docker容器中无法使用ll命令解决方案
  5. html css中margin的用法
  6. 将windows电脑上的图片导入到iphone
  7. 手机声音同步到另一部手机_手机照片怎么传到另一个手机?用这一招,超简单!...
  8. 高端运动耳机哪个品牌最好用、最新款运动耳机推荐
  9. html5plus (H5 WebApp)
  10. java 转义字符使用_Java 转义字符的使用