jquery.lazyload(懒加载)的使用与配置

jquery lazyload是一款基于jquery框架的图片延迟加载应用,它可以让用户访问页面的时候只显示当前屏幕所示的图片。原理为利用JS替换图片src为loading图片,新data-original属性放置图片地址,scroll事件触发JS把src重新换成图片的真实地址。

一. 如何使用

// 最简单的使用,不带参数
$('img').lazyload();
 
// 带参数(配置对象),下面配置对象中的各个属性值都是默认的
$('img').lazyload({

  threshold : 0,

   failure_limit : 0,

   event : “scroll”,  //触发事件

  effect : “show”,  //显示方式

   container : window, //容器

   data_attribute : “original”,  //属性

   skip_invisible : true,

  appear : null,

  load : null,   placeholder:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC"

});
 
二. 参数配置

1.  threshold:

  临界值,这个值是针对container容器的,即距离container容器视口的临界值,就是用来提前加载的。

   如: $(“img”).lazyload({ threshold : 200 });当距离图片还有200像素的时候,就开始加载图片。

2.  event:

  事件,container容器默认绑定scroll这个事件,在这个事件被触发时,会不断的判断img元素是否满足触发appear的条件, 因此当浏览器不停的滚动下来时,如果满足条件,则显示图片;

  另外还有一点,如果这个事件不是scroll事件,则选中的img元素都会绑定这个事件,绑定的这个事件中同样会触发内部appear事件;

3. effect:

  显示方法,默认为show,也可以设置为fadeIn,API中隐藏了一个配置属性effectspeed,动画运行的时间

4. data_attribute: "original“

  img元素的一个data属性,用于存放图片的真实地址

5. skip_invisible: true

  true:不加载隐藏的不可见图像,false:为加载,如:
<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>jquery.lazyload</title>

    <style>

      .cont{ width:640px; height:300px; overflow: scroll; position:relative; }

      .cont img{ width:640px; }

    </style>

</head>

<body>



<div class="cont">

    <img data-original="img/1.jpg" style="display:none" />

    <img data-original="img/2.jpg" />

    <img data-original="img/3.jpg"  />

    <img data-original="img/4.jpg" />

    <img data-original="img/5.jpg" />

    <img data-original="img/6.jpg" />

</div>



<script src="js/jquery-1.11.0.min.js"></script>

<script src="js/jquery.lazyload.min.js"></script>

<script>

    $(function(){

        $("img").lazyload({"container":".cont","skip_invisible":false});

    });

</script>

</body>

</html>

6. placeholder

  图片占位符,img元素默认src属性为1*1像素的透明图片

7. appear: null

  在img触发appear事件时执行的回调

8. load: null

  在img触发load事件时执行的回调

9. failure_limit: 0

  循环查找 img,根据 HTML 文档的布局从上往下查找,0表示当找到第一个并未显示/加载的 img 时,就会停止往下查找.

  如果找到的是第 failure_limit 个img元素,且不在container视口上方,左方及视口内(可以允许在视口下方,右方),则中断循环。如:

  $(“img”).lazyload({ failure_limit : 10 }); 表示插件找到 10 个不在可见区域的图片是才停止搜索。

  注:  float 和 position 造成图片排序换乱时,才会有作用

三.其他

1.jquery lazyload可以做延时,如:

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>延时加载-jquery.lazyload</title>

    <style>

      .cont{ width:640px; height:300px; overflow: scroll; position:relative; }

      .cont img{ width:640px; }

    </style>

</head>

<body>



<div class="cont">

    <img data-original="img/1.jpg" />

    <img data-original="img/2.jpg" />

    <img data-original="img/3.jpg" />

    <img data-original="img/4.jpg" />

    <img data-original="img/5.jpg" />

    <img data-original="img/6.jpg" />

</div>



<script src="js/jquery-1.11.0.min.js"></script>

<script src="js/jquery.lazyload.min.js"></script>

<script>

$(function() {   

  $("img").lazyload({  

    event : "sporty"  

  });   

});   

$(window).bind("load", function() {   

  var timeout = setTimeout(function() {$("img").trigger("sporty")}, 5000);   

});  

</script>

</body>

</html>

2.tab加载

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>tab-jquery.lazyload</title>

    <style>

      .nav span{ background:#ccc; display:inline-block; width:80px; height:40px; line-height:40px; text-align:center; cursor:pointer; }

      .nav span.on{ background:#eee; }

      .cont{ width:640px; height:300px; }

      .cont-item{ width:640px; height:300px; overflow: scroll; }

      .cont img{ width:640px; }

      .cont .cont-item:nth-child(2){ display:none; }

    </style>

</head>

<body>

<div class="nav">

    <span class="on">1</span>

    <span>2</span>

</div>

<div class="cont">

  <div class="cont-item">

    <img data-original="img/1.jpg" height="574" width="765" />

    <img data-original="img/2.jpg" height="574" width="765" />

    <img data-original="img/3.jpg" height="574" width="765" />

  </div>

  <div class="cont-item">

    <img data-original="img/4.jpg" height="574" width="765" />

    <img data-original="img/5.jpg" height="574" width="765" />

    <img data-original="img/6.jpg" height="574" width="765" />

  </div>

</div>



<script src="js/jquery-1.11.0.min.js"></script>

<script src="js/jquery.lazyload.min.js"></script>

<script>

    $(function(){

        $(".cont-item").eq(0).find("img").lazyload({"container":".cont-item"});

        $(".nav span").click(function(){

            var t = $(this);

            var inx = t.index();

            if(t.hasClass("on")){

                return;

            }else{

                t.addClass("on").siblings("span").removeClass("on");

                $(".cont-item").eq(inx).show().siblings(".cont-item").hide();

                $(".cont-item").eq(inx).find("img").lazyload({"container":".cont-item"});

            }

        });

    });

</script>

</body>

</html>

 

 

你可能感兴趣的:(lazyload)