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

    <!DOCTYPE html>
    <html lang="en">
     
     <head>
     <meta charset="UTF-8">
     <title>图片懒加载(可视区域加载)</title>
     <style>
      * {
      padding: 0px;
      margin: 0px;
      }
       
      html,
      body {
       100%;
      min-height: 100%;
      }
       
      #SB {
      margin: 0;
      padding: 0;
      list-style: none;
      }
       
      #SB .in {
      border: 1px solid red;
      margin: 10px;
      text-align: center;
      height: 400px;
       400px;
      float: left;
      }
       
      .in img {
      border: none;
      vertical-align: middle;
      height: 400px;
       400px;
      }
     </style>
     </head>
     
     <body>
     <ul id="SB">
      <li class="in"><img src="" data-imgurl="img/1.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/2.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/3.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/4.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/5.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/6.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/7.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/8.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/9.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/10.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/11.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/12.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/13.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/14.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/15.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/16.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/1.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/2.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/3.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/4.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/5.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/6.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/7.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/8.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/9.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/10.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/11.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/12.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/13.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/14.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/15.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/16.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/1.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/2.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/3.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/4.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/5.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/6.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/7.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/8.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/9.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/10.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/11.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/12.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/13.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/14.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/15.jpg"></li>
      <li class="in"><img src="" data-imgurl="img/16.jpg"></li>
     </ul>
     <script type="text/javascript">
      var aImages = document.getElementById("SB").getElementsByTagName('img'); //获取id为SB的文档内所有的图片
      loadImg(aImages);
      window.onscroll = function() { //滚动条滚动触发
      loadImg(aImages);
      };
      //getBoundingClientRect 是图片懒加载的核心
      function loadImg(arr) {
      for(var i = 0, len = arr.length; i < len; i++) {
       if(arr[i].getBoundingClientRect().top < document.documentElement.clientHeight && !arr[i].isLoad) {
       arr[i].isLoad = true; //图片显示标志位
       //arr[i].style.cssText = "opacity: 0;"; 
       //
       
       (function(i) {
        setTimeout(function() {
        if(arr[i].dataset) { //兼容不支持data的浏览器
           aftLoadImg(arr[i], arr[i].dataset.imgurl);
          } else {
           aftLoadImg(arr[i], arr[i].getAttribute("data-imgurl"));
          }
          arr[i].style.cssText = "transition: 1s; opacity: 1;" //相当于fadein
        }, 500)
       })(i);
       }
      }
      }
     
      function aftLoadImg(obj, url) {
        var oImg = new Image();
        oImg.onload = function() {
         obj.src = oImg.src; //下载完成后将该图片赋给目标obj目标对象
        }
        oImg.src = url; //oImg对象先下载该图像
      }
     </script>
     </body>
     
    </html>
    

    还有一种是用插件的,这个是复制来的,链接留一下

    http://www.cnblogs.com/moumou0213/

    对于有较多的图片的网页,使用图片延迟加载,能有效的提高页面加载速度,比如商城网页。

    lazyload使用方法:

    载入 JavaScript 文件:

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

    修改 HTML 代码中需要延迟加载的 IMG 标签:

    1
    2
    3
    4
    5
    6
    <!--
    将真实图片地址写在 data-original 属性中,而 src 属性中的图片换成占位符的图片(例如 1x1 像素的灰色图片或者 loading 的 gif 图片)
    添加 class="lazy" 用于区别哪些图片需要延时加载,当然你也可以换成别的关键词,修改的同时记得修改调用时的 jQuery 选择器
    添加 width 和 height 属性有助于在图片未加载时占满所需要的空间
    -->
    <img class="lazy" src="grey.gif" data-original="example.jpg" width="640" heigh="480">

    调用 Lazy Load:

    $('img.lazy').lazyload();

    参数参考网址:http://code.ciaoca.com/jquery/lazyload/

    项目中遇到的问题,当页面中同时使用swiper插件做图片轮播的时候,就不能使用Lazy Load来处理轮播的图片,这时就需要使用swiper的延迟加载参数-lazyLoading:true;

    具体使用方法:(http://www.swiper.com.cn/api/Images/2015/0308/213.html)

    设为true开启图片延迟加载,使preloadImages无效。
    需要将图片img标签的src改写成data-src,并且增加类名swiper-lazy。
    背景图的延迟加载则增加属性data-background(3.0.7开始启用)。

    复制代码
    <div class="swiper-container">
        <div class="swiper-wrapper">
            <div class="swiper-slide">
                <img data-src="path/to/picture-1.jpg" class="swiper-lazy">
                <div class="swiper-lazy-preloader"></div>
            </div>
            <div class="swiper-slide">
                <img data-src="path/to/picture-2.jpg" class="swiper-lazy">
                <div class="swiper-lazy-preloader"></div>
            </div>
            <div class="swiper-slide">
                <div data-background="path/to/picture-3.jpg" class="swiper-lazy">slide3</div>
            </div>
        </div>
    </div> 
    <!-调用->
    <script> 
    var mySwiper = new Swiper('.swiper-container',{
      lazyLoading : true,
    })
    </script>
    复制代码
  • 相关阅读:
    springboot整合Swagger2
    FastJson会把哪些字符串解析为null
    BitMap再再体验之布隆过滤器
    如何利用windows自带的画图工具拼接图片
    BitMap再体验之排序
    BitMap 初体验
    Chrome 隐藏最常访问的网站
    idea同一个项目不同端口启动
    ubuntu16搭建harbor镜像库
    virtualbox硬盘扩容
  • 原文地址:https://www.cnblogs.com/anxiaoyu/p/6866918.html
Copyright © 2011-2022 走看看