zoukankan      html  css  js  c++  java
  • 图片懒加载插件

    <!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; 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感觉不错,先整过来再说

  • 相关阅读:
    编写通用shell脚本启动java项目,适用于多数服务,只需修改服务名即可
    linux操作系统安装jdk
    搭建dubbo+zookeeper+dubboadmin分布式服务框架(windows平台下)
    二.传统服务的拆分策略
    一.把传统服务做成dubbo分布式服务架构的步骤
    Android IOS WebRTC 音视频开发总结(六)-- iOS开发之含泪经验
    Android WebRTC 音视频开发总结(五)-- webrtc开发原型
    Android WebRTC 音视频开发总结(四)-- webrtc传输模块
    Android WebRTC 音视频开发总结(三)-- 信令服务和媒体服务
    Android WebRTC 音视频开发总结(二)-- webrtcdemo介绍
  • 原文地址:https://www.cnblogs.com/wysdddh/p/7132990.html
Copyright © 2011-2022 走看看