图片懒加载插件

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>利用图片延迟加载来优化页面性能(jQuery)</title>
<link rel="stylesheet" href="http://www.feelcss.com/public-css/reset.css">
<style type="text/css">
.page-info { padding:8px 15px; background:#fcea9e; border-bottom:1px solid #b6bac0; font:normal 16px Georgia; }
.page-info h1 { float:left; }
.page-info a { font-weight:bold; color:#222; }  
.return-article { float:right; }
.return-article h2{ display:inline; }

body{ height:2700px; }
.a1{ margin:40px; width:1000px; background:#e6e6e6; }
</style>
</head>
<body>
<div class="page-info clearfix">
  <h1><a href="http://www.feelcss.com" title="回到 Hey@feelcss 首页">Hey@feelcss</a></h1>
  <div class="return-article">返回文章:<h2><a href="http://www.feelcss.com/picture-lazy-loading-to-optimize-page-performance.html" title="利用图片延迟加载来优化页面性能(jQuery)">利用图片延迟加载来优化页面性能(jQuery)</a></h2></div>
</div>

<script type="text/javascript">
for(var i=0; i<40; i++){
  document.write("<p style='color:#999;font-size:12px;'>【请往下拉动滚动条】</p>");
}
</script>

<div class="a1">
  <img class="lazyLoading" data-url="http://www.feelcss.com/demo/picture-lazy-loading/022051.42796807.jpg">
  <noscript><img src="http://www.feelcss.com/demo/picture-lazy-loading/022051.42796807.jpg">替换方案</noscript>
</div>
<div class="a1">
  <img class="lazyLoading" data-url="http://www.feelcss.com/demo/picture-lazy-loading/141500.94376871.jpg">
  <noscript><img src="http://www.feelcss.com/demo/picture-lazy-loading/141500.94376871.jpg">替换方案</noscript>
</div>
<div class="a1">
  <img class="lazyLoading" data-url="http://www.feelcss.com/demo/picture-lazy-loading/085825.73643922.jpg">
  <noscript><img src="http://www.feelcss.com/demo/picture-lazy-loading/085825.73643922.jpg">替换方案</noscript>
</div>
<div class="a1">
  <img class="lazyLoading" data-url="http://www.feelcss.com/demo/picture-lazy-loading/022652.83797841.jpg">
  <noscript><img src="http://www.feelcss.com/demo/picture-lazy-loading/022652.83797841.jpg">替换方案</noscript>
</div>
<div class="a1">
  <img class="lazyLoading" data-url="http://www.feelcss.com/demo/picture-lazy-loading/090002.79394226.jpg">
  <noscript><img src="http://www.feelcss.com/demo/picture-lazy-loading/090002.79394226.jpg">替换方案</noscript>
</div>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="http://www.feelcss.com/demo/picture-lazy-loading/jquery.imgLazyLoading.js"></script>
<script type="text/javascript">
$(".lazyLoading").imgLazyLoading({
  url : "data-url",
  fadeIn : 400
});
</script>
</body>
</html>

  

/*
* 基于jQuery的图片延迟加载插件
* by Hey@feelcss (http://www.feelcss.com/)
*/
;(function($){
  $.fn.imgLazyLoading = function(options){
    //定义需要的参数的初始值,并合并options对象到set对象
    var set = $.extend({
      url : "data-url",
      fadeIn : 0
    }, options || {});
    var cache = [];

    $(this).each(function(){
      var nodeName = this.nodeName.toLowerCase();
      var url = $(this).attr(set.url);
      //获取每个元素的信息
      var data = {
        obj : $(this),
        url : url,
        tag : nodeName
      }
      cache.push(data);
    });

    var lazyLoading = function(){
      $.each(cache,function(i, e){
        var obj = e.obj,
        url = e.url,
        tag = e.tag;
        if(obj){
          var winHeight = $(window).height(); //当前窗口高度
          var scrolltop = $(window).scrollTop(); //滚动条偏移高度
          var oTop = obj.offset().top; //图片相对高度
          //判断是否在当前窗口内
          if((oTop-scrolltop) > 0 && (oTop-scrolltop) < winHeight){
            if(tag === "img"){
              if(set.fadeIn){
              //渐出效果
              obj.fadeIn(set.fadeIn);
              }
              //给src属性赋值
              obj.attr("src", url);
            }else{
              return false;
            }
            e.obj = null;
          }
        }
      });
    }
    //加载后立即执行
    lazyLoading();
    //执行滚动,触发事件
    $(window).bind("scroll", lazyLoading);
  };
})(jQuery);

  看完demo感觉不错,先整过来再说

posted @ 2017-07-07 16:43  汪洋是大大的海  阅读(106)  评论(0编辑  收藏  举报