百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>JS教程> 详解js中图片懒加载的实现道理
分享文章到:

详解js中图片懒加载的实现道理

发布时间:09/01 来源:未知 浏览: 关键词:

图片懒加载优势:

增强会员体验;

优化代码;

减少http的恳求;

减少效劳器端压力;

效劳器的按需加载;

图片懒加载道理:

先将图片的src设定为统一张图片或者不设定,同时给img标签设定一个非凡属性,例如:data-src用于存置图片的真实预览地址;若图片未进入可视区域时,展现统一张图片或者直接不展现图片,此时就不会发生http恳求,当图片进入可视区域时,将data-src上的值赋给src,此时再发送http恳求。

关键:推断图片可否进入到可视区域(关键函数)

页可见区域宽: document.body.clientWidth; 

网页可见区域高: document.body.clientHeight; 

网页可见区域宽: document.body.offsetWidth (包罗边线的宽); 

网页可见区域高: document.body.offsetHeight (包罗边线的宽); 

网页正文全文宽: document.body.scrollWidth; 

网页正文全文高: document.body.scrollHeight; 

网页被卷去的高: document.body.scrollTop; 

网页被卷去的左: document.body.scrollLeft; 

网页正文部分上: window.screenTop; 

网页正文部分左: window.screenLeft; 

屏幕辨论率的高: window.screen.height; 

屏幕辨论率的宽: window.screen.width; 

屏幕可用工作区高度: window.screen.availHeight; 

当前元素相关于其 offsetParent 元素的顶部的间隔: HTMLElement.offsetTop; 

阅读器窗口的视口(viewport)高度(以像素为单位): window.innerHeight; (假如有水平滚动条,也包罗滚动条高度)

(引荐教程:js教程)

代码实现:

html部分

<div>
  <img src="./img/1.jpg" data-src="./img/1.jpg" alt="">
  <img src="./img/1.jpg" data-src="./img/2.jpg" alt="">
  <img src="./img/1.jpg" data-src="./img/3.jpg" alt="">
  <img src="./img/1.jpg" data-src="./img/4.jpg" alt="">
  <img src="./img/1.jpg" data-src="./img/5.jpg" alt="">
  <img src="./img/1.jpg" data-src="./img/6.jpg" alt="">
  <img src="./img/1.jpg" data-src="./img/7.jpg" alt="">
  <img src="./img/1.jpg" data-src="./img/8.jpg" alt="">
  <img src="./img/1.jpg" data-src="./img/9.jpg" alt="">
  <img src="./img/1.jpg" data-src="./img/10.jpg" alt="">
 </div>

js部分

window.onload = () => {
   // 猎取某节点与阅读器顶部的间隔
   function getTop(e) {
    if (!e) return
    return e.offsetTop
   }
   let imgs = document.getElementsByTagName('img')
   function lazyLoading(imgs) {
    // 可是区域高度
    let innerHeight = window.innerHeight;
    // 滚动区域高度
    let scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
    for (let i = 0; i < imgs.length; i++) {
     // 图片间隔顶部的间隔大于可视区域和滚动区域之和时加载
     if (scrollTop + innerHeight > getTop(imgs[i])) {
      imgs[i].src = imgs[i].getAttribute('data-src')
     }
    }
   }
   lazyLoading(imgs)
   window.onscroll = () => {
    lazyLoading(imgs)
   }
  }

以上就是详解js中图片懒加载的实现道理的具体内容,更多请关注百分百源码网其它相关文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有150人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板