美文网首页
图片懒加载

图片懒加载

作者: McDu | 来源:发表于2017-08-01 09:54 被阅读32次
  1. 作用:为了让页面打开的速度更快。
  2. 原理: 首屏中,用一张小的默认图占位,当内容加载完成后,再加载真实的图片。 对于其他屏中,当滚动条滚动到对应地方时,开始加载真实的图片。

比如有一个如下的代码:

.images img {
  display:none;
}

<div class = "images">
  <img src = "" trueImg ="img.jpg"/>
</div>

首屏延时加载:

  var images = document.getElementsByClassName("images")[0];
 var imgSrc =  images.getElementsByTagName("img")[0];

  window.setTimeout(function(){
  /*    imgSrc.src = imgSrc.getAttribute("trueImg");
      imgSrc.style.display = "block";  // 图片地址必须是有效的
*/
    var oImg = new Image();  // var oImg = document.createElement("img");
    oImg.src = imgSrc.getAttribute("trueImg");
    oImg.onload = function(){  // 图片能够正常加载执行该方法
      imgSrc.src = this.src;
      imgSrc.style.display = "block"; 
      oImg = null;
    }    
},500);

其他屏延时加载:当其他屏的图片完全进入视野时才加载真实的图片。如果(图片的高度+距 body 的上偏移)的距离小于 (clientHeight + scrollTop),加载真实的图片。

window.onscroll = function(){
 if(images.isLoad){
  return;
  }
  var A = images.offsetHeight +images.offsetTop;
  var B = document.documentElement.clientHeight + document.body.scrollTop;   // 这里没有兼容性处理,是不对的。
  if(A < B){
    var oImg = new Image();
    oImg.src = imgSrc.getAttribute("trueImg");
    oImg.onload = function(){
        imgSrc.src = this.src;
        imgSrc.style.display = "block";
        oImg = null;
    }    
    images.isLoad = true;   // 避免重复加载
  }
}

promise 异步加载图片:

var images = document.getElementsByClassName("images")[0];
var imgSrc =  images.getElementsByTagName("img")[0];
var url = imgSrc.getAttribute("trueImg");
function loadImageAsync(url) {
  return new Promise(function(resolve, reject) {
    var image = new Image();
    
    image.onload = function() {
      resolve(image);
    };

    image.onerror = function() {
      reject(new Error('Could not load image at ' + url));
    };

    image.src = url;
  });
}

相关文章

  • 项目优化

    图片懒加载,数据懒加载, 路由懒加载 1.图片懒加载原理 1.1 开始时 不设置src属性 1.2 图片在可视区域...

  • JS

    JS 懒加载,预加载 概念:懒加载也叫延迟加载:JS图片延迟加载,延迟加载图片或符合某些条件时才加载某些图片。预加...

  • 图片懒加载

    懒加载与预加载的基本概念。 懒加载也叫延迟加载:JS图片延迟加载 延迟加载图片或符合某些条件时才加载某些图片。 预...

  • 图片懒加载

    图片懒加载 图片懒加载在一些图片密集型的网站中运用比较多,通过图片懒加载可以让一些不可视的图片不去加载,避免一次性...

  • js 实现图片懒加载

    一、懒加载 懒加载也叫延迟加载,Js中图片的延迟加载,延迟图片需要符合某些条件时才加载;对于图片过多的页面,为了加...

  • 图片懒加载和预加载

    图片懒加载的原理是什么? 首先明白为什么要懒加载: 懒加载即延迟,对于图片过多的页面,为了加快页面加载速度,我们需...

  • selenuim和phantonJs处理网页动态加载数据的爬取

    一.图片懒加载 什么是图片懒加载? 图片懒加载是一种网页优化技术。图片作为一种网络资源,在被请求时也与普通静态资源...

  • 懒加载和瀑布流

    一、简述图片懒加载的实现原理 图片懒加载 若一开始,页面上有许多的图片要加载,而如果同时加载这么多图片,会消耗性能...

  • jquery懒加载、回到顶部

    1.知识点部分: 懒加载图片的原理是什么? 图片懒加载也称为曝光加载,将页面上的图片分批加载,只有当图片出现在wi...

  • 懒加载和预加载

    1)概念: 懒加载也叫延迟加载:JS图片延迟加载,延迟加载图片或符合某些条件时才加载某些图片。预加载:提前加载图片...

网友评论

      本文标题:图片懒加载

      本文链接:https://www.haomeiwen.com/subject/cmrdlxtx.html