全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

快速实现JS图片懒加载(可视区域加载)示例代码

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小时内与您取得联系。