全网整合营销服务商

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

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

js实现首屏延迟加载实现方法 js实现多屏单张图片延迟加载效果

 本文为大家分享了js实现延迟加载思想和首屏延迟加载的具体代码,供大家参考,具体内容如下

作用:保证页面打开的速度(3s之内如果首页打不开就已经算是死亡页面了)

原理:

  1)、对于首屏内容中的图片:首先给对应的区域一张默认图片占的位置(默认图需要非常的小,一般可以维持在5kb以内),当首屏内容都加载完成后(或者也可以给一个延迟的时间),我在开始加载真实的图片

  2)、对于其他屏中的图片:也是给一张默认的图片占位,当滚动条滚动到对应区域的时候,我们再开始加载真实的图片

  扩展:数据的异步加载,开始只把前两屏的数据加载绑定出来,后面的数据不进行处理,当页面滚动到对应区域的时候,在重新请求数据绑定渲染数据

具体可以看一下下图

首屏的延迟加载代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style>
    *{
      padding:0;
      margin:0;
      font-size:14px;
    }
    #banner{
      margin:10px auto;
      width:300px;
      height:150px;
      border:1px solid green;
      background:url('img/default.gif') no-repeat center center;/*给当前的区域加一个默认图占位,告诉用户此处的图片正在加载中*/
    }
    #banner img{
      display:none;/*在开始的时候IMG的SRC属性没有地址,这样的话在IE浏览器中会显示一张碎图,不美观,所以我们让其默认是隐藏的,当真实的图片加载完成后在显示*/
      width:100%;
      height:100%;
    }
  </style>
</head>
<body>
  <div id='banner'>
    <!--trueImg是当前标签的自定义属性,存储的是真实图片的地址-->
    <img src="" alt="" trueImg="img/jd.jpg">
  </div>
  <script>
    var banner = document.getElementById('banner'),imgFir = banner.getElementsByTagName('img')[0]
    window.setTimeout(function(){
      // imgFir.src = imgFir.getAttribute('trueImg');
      // imgFir.style.display = "block"
      //以上处理还是不完整的:如果我们获取的真实图片的地址是错误的,赋值给IMG的SRC属性的时候,不仅控制台会报错,而且页面中还会出现碎图
      //获取图片的地址,验证地址的有效性,是有效的才赋值,不是有效的是不进行处理的
      // var oImg = document.createElement('img')
      var oImg = new Image;//创建一个临时的IMG标签
      oImg.src = imgFir.getAttribute('trueImg');
      oImg.onload = function(){//当图片能够正常加载
        imgFir.src = this.src;
        imgFir.style.display = "block";
        oImg = null
        console.log('加载完成')
      }
      console.log('正在加载中...')
    },500)
  </script>
</body>
</html>

多屏单张图片的延迟加载

具体代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style>
    *{
      padding:0;
      margin:0;
      font-size:14px;
    }
    #banner{
      margin:10px auto;
      width:300px;
      height:150px;
      border:1px solid green;
      background:url('img/default.gif') no-repeat center center;/*给当前的区域加一个默认图占位,告诉用户此处的图片正在加载中*/
    }
    #banner img{
      display:none;/*在开始的时候IMG的SRC属性没有地址,这样的话在IE浏览器中会显示一张碎图,不美观,所以我们让其默认是隐藏的,当真实的图片加载完成后在显示*/
      width:100%;
      height:100%;
    }
  </style>
</head>
<body>
  <div id='banner'>
    <!--trueImg是当前标签的自定义属性,存储的是真实图片的地址-->
    <img src="" alt="" trueImg="img/jd.jpg">
  </div>
  <script>
    var banner = document.getElementById('banner'),imgFir = banner.getElementsByTagName('img')[0]

    window.onscroll = function(){
      if(banner.isLoad){
        return;
      }
      var A = banner.offsetHeight+utils.offset(banner).top;
      var B = utils.win("clientHeight") + utils.win("scrollTop");
      if(A<B){
        //当条件成立,我们加载真实的图片,第一次加载完成后,我们在让页面滚动的过程中A<B一直成立,又重新执行下面的操作,导致了重复给一个容器中的图片进行加载
        var oImg = new Image;
        oImg.src = imgFir.getAttribute('trueImg');
        oImg.onload = function(){
          imgFir.src = this.src;
          imgFir.style.display = 'block';
          oImg = null;
          
        }
        banner.isLoad = true;//设置一个自定义属性告诉浏览器我已经把图片加载完了(不管是否正常的加载,只要处理过一次以后都不需要处理了)

      }
    }
  </script>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# js  # 延迟加载  # JS同步、异步、延迟加载的方法  # JS实现非首屏图片延迟加载的示例  # JS图片延迟加载插件LazyImgv1.0用法分析【附demo源码下载】  # Javascript之图片的延迟加载的实例详解  # js实现多张图片延迟加载效果  # js图片加载效果实例代码(延迟加载+瀑布流加载)  # js实现延迟加载的几种方法  # js图片延迟加载(Lazyload)三种实现方式  # JS实现图片延迟加载并淡入淡出效果的简单方法  # js实现延迟加载的几种方法详解  # 加载  # 的是  # 自定义  # 完成后  # 加载中  # 绑定  # 让其  # 中会  # 这样的话  # 我在  # 都不  # 还会  # 看一下  # 报错  # 大家分享  # 首页  # 打不开  # 创建一个  # 者也  # 具体内容 


相关文章: 学校建站服务器如何选型才能满足性能需求?  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  杭州银行网站设计制作流程,杭州银行怎么开通认证方式?  潍坊网站制作公司有哪些,潍坊哪家招聘网站好?  建站之星在线版空间:自助建站+智能模板一键生成方案  Android滚轮选择时间控件使用详解  大连网站设计制作招聘信息,大连投诉网站有哪些?  哈尔滨网站建设策划,哈尔滨电工证查询网站?  如何快速查询域名建站关键信息?  网站制作说明怎么写,简述网页设计的流程并说明原因?  如何选择美橙互联多站合一建站方案?  定制建站是什么?如何实现个性化需求?  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  桂林网站制作公司有哪些,桂林马拉松怎么报名?  如何使用Golang table-driven基准测试_多组数据测量函数效率  如何用IIS7快速搭建并优化网站站点?  广州建站公司哪家好?十大优质服务商推荐  全景视频制作网站有哪些,全景图怎么做成网页?  青岛网站建设如何选择本地服务器?  定制建站模板如何实现SEO优化与智能系统配置?18字教程  教学论文网站制作软件有哪些,写论文用什么软件 ?  北京营销型网站制作公司,可以用python做一个营销推广网站吗?  北京制作网站的公司,北京铁路集团官方网站?  建站之星展会模板:智能建站与自助搭建高效解决方案  如何访问已购建站主机并解决登录问题?  公司门户网站制作流程,华为官网怎么做?  如何通过西部建站助手安装IIS服务器?  如何挑选高效建站主机与优质域名?  如何确保FTP站点访问权限与数据传输安全?  宁波自助建站系统如何快速打造专业企业网站?  高端网站建设与定制开发一站式解决方案 中企动力  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析  网站制作费用多少钱,一个网站的运营,需要哪些费用?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  公司网站的制作公司,企业网站制作基本流程有哪些?  建站之星如何优化SEO以实现高效排名?  深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?  如何通过多用户协作模板快速搭建高效企业网站?  如何通过网站建站时间优化SEO与用户体验?  网站制作企业,网站的banner和导航栏是指什么?  教学网站制作软件,学习*后期制作的网站有哪些?  如何在阿里云服务器自主搭建网站?  高防服务器如何保障网站安全无虞?  ,想在网上投简历,哪几个网站比较好?  如何在Golang中使用replace替换模块_指定本地或远程路径  如何配置WinSCP新建站点的密钥验证步骤?  *服务器网站为何频现安全漏洞?  php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】  免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。