zoukankan      html  css  js  c++  java
  • 图片懒加载实现

    现在网站页面内容越来越丰富,图片内容也越来越多,而图片过多会导致网页文件过大,从而引发加载缓慢的问题,而图片懒加载就是为解决这一问题而生。

    首先我们来讲Jquery的懒加载控件

     jQuery lazyload.JS

       jQuery lazyload.JS 地址:https://github.com/helijun/helijun/blob/master/plugin/lazyLoad/jquery.lazyload.js  直接复制源码到本地

       jQuery lazyload.JS是用 jQuery编写的一个控件,所以要运行 jQuery lazyload.JS必须先载入  jQuery

    1、请将下列代码加入</body>前: 

      <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
      <script type="text/javascript" src="jquery.lazyload.js"></script>
    2、首先图片大小必须设置,然后删除图片的src标签,将图片的地址放在data-original属性上,给懒加载图像一个特定的class(例如:lazy)
    代码如下:

      <img class="lazy" alt="" width="800" height="5000" data-original="img/lazy1.jpg" />

      $(function() {
         $("img.lazy").lazyload();
      });
    3、效果设置更改
       jQuery lazyload.JS在加载时有很多选项可以设置:
      1、设置临界点
        默认情况下图片是进入屏幕区域后再加载. 如果你想提前加载图片, 可以设置threshold 选项, 比如设置 threshold 为 150 令图片在距离屏幕 150 像素时提前加载.   
        $("img.lazy").lazyload({
           threshold : 200
        });
      2、事件触发加载
        也可以通过各类事件来触发加载,如点击事件:
        $("img.lazy").lazyload({
           event : "click"
        });
      3、特效加载
        默认是调用show()进行加载,你当然可以使用你想要的效果来实现。比如下面的代码使用fadeIn (淡入效果):    
        $("img.lazy").lazyload({
         effect : "fadeIn"
        });
      4、提前加载图片
        你也可以设定提前加载几张图片来提升网页浏览的连贯性,这由failure_limit的值来决定:    
        $("img.lazy").lazyload({
           failure_limit : 2
        });
      5、加载隐藏的图片
        Lazy Load 默认忽略了隐藏图片. 如果你想要加载隐藏图片, 请将 skip_invisible 设为 false:
        $("img.lazy").lazyload({
           skip_invisible : false
        });
    4、为了在某些浏览器或用户未启用JS或js控件加载失败的情况下实现优雅降级, 可以添加noscript标签,然后通过 CSS 先隐藏带控件的img元素,同时让控件执行成功时先运行show()方法将img元素显示出来,再运行懒加载.
    最后代码如下:

    <style type="text/css">
      img {
       100%;
      }
      .lazy{display: none;}
    </style>
    <img src="lun1.jpg" alt=""><br>
    <img src="lun2.jpg" alt=""><br>
    <img data-original="lun1.jpg" class="lazy" alt=""><br>
      <noscript><img src="lun1.jpg" alt=""></noscript>
    <img data-original="lun4.jpg" class="lazy" alt=""><br>
      <noscript><img src="lun4.jpg" alt=""></noscript>
    <img data-original="lun5.jpg" class="lazy" alt=""><br>
      <noscript><img src="lun5.jpg" alt=""></noscript>
    <img data-original="lun4.jpg" class="lazy" alt=""><br>
      <noscript><img src="lun4.jpg" alt=""></noscript>
    <img data-original="lun2.jpg" class="lazy" alt=""><br>
      <noscript><img src="lun2.jpg" alt=""></noscript>
    <img data-original="lun1.jpg" class="lazy" alt="">
      <noscript><img src="lun1.jpg" alt=""></noscript>
    <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
    <script src='jqueryLazyload.js'></script>
    <script type="text/javascript">
    $(function() {
      $("img.lazy").show().lazyload({
        effect:'fadeIn'
      });
    });

    </script>

    jq的懒加载大家看懂后,就可以尝试手动写懒加载效果:

    其实懒加载的原理非常的简单:初次加载页面时只加载用户能看到的图片,而其他的图片等用户需要看时再加载。

    首先将需要懒加载的图片先设置空的路径地址,并且设置display:none;让其隐藏;

      <img class="lazy" id='lazy1' alt="" src=""/>

      <img class="lazy" id='lazy2' alt="" src=""/>

      .lazy{display:none}

    这样在初次加载时由于路径为空,图片无法加载出来,并且因为图片被隐藏,所以也不会占用页面空间。

    那么接下来就是实现懒加载的js部分了,这里有两种方式,可以根据需求灵活使用:

    1、通过$(document).ready()方法,在页面加载完成后给图片添加路径,并取消隐藏:

      $(document).ready(function(){

        $('#lazy1').attr('src','/Template/xpshop_currents/Images/haohuiduo.jpg');

         $('#lazy1').show();

      })

    2、通过监听鼠标页面滚动距离来加载图片

      $(window).scroll(function(){

        $('#lazy2').attr('src','/Template/xpshop_currents/Images/jiazhi.jpg');//鼠标滚动立即加载
        if ($('#lazy2').offset().top - $(document).scrollTop()<1) {//鼠标滚动到合适的位置时将图片显示出来,可以设定自己想要的动画效果
          $('#lazy2').fadeIn();
        };
        $('#lazy3').attr('src','/Template/xpshop_currents/Images/weibu.jpg');
        if ($('#lazy3').offset().top - $(document).scrollTop()<1) {
          $('#lazy3').fadeIn();
        };
      })

     懒加载其实很简单,大家有没有看懂呢?
  • 相关阅读:
    Android OpenGL ES 2.0 (四) 灯光perfragment lighting
    Android OpenGL ES 2.0 (五) 添加材质
    冒泡排序函数
    javascript object 转换为 json格式 toJSONString
    Liunx CentOS 下载地址
    jquery 图片切换特效 鼠标点击左右按钮焦点图切换滚动
    javascript 解析csv 的function
    mysql Innodb Shutdown completed; log sequence number解决办法
    Centos 添加 yum
    javascript 键值转换
  • 原文地址:https://www.cnblogs.com/webwangjie/p/7193636.html
Copyright © 2011-2022 走看看