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

    图片懒加载 

    定义 



    图片延迟加载也称为懒加载,延迟加载图片或符合某些条件时才加载某些图片,通常用于图片比较多的网页。可以减少请求数或者延迟请求数,优化性能。 
      
    呈现形式 



    【1】延时加载,使用setTimeout或setInterval进行加载延迟,如果用户在加载前就离开,自然就不会进行加载。 
    【2】条件加载,符合某些条件或者触发了某些条件才开始异步加载。 
    【3】可视区域加载,仅仅加载用户可以看到的区域,这个主要监控滚动条来实现,一般距离用户看到的底边很近的时候开始加载,这样能保证用户下拉时图片正好接上,不会有太长时间的停顿。 
      
    基本步骤 



    【1】网页中的图片都设为同一张图片 
    【2】给图片增加data-original = "img/test.jpg"的属性,保存图片的真实地址 
    【3】当触发某些条件时,自动改变该区域的图片的src属性为真实的地址 
      

    应用 



    【点击按钮显示图片】 
    <!DOCTYPE html> 
    <html lang="en"> 
    <head> 
    <meta charset="UTF-8"> 
    <title>Document</title> 
    <style> 
    body{ 
        margin: 0; 

    img{ 
        height: 100px; 
         100px; 

    </style> 
    </head> 
    <body> 
    <button>加载图片</button> 
    <img src="#" alt="测试" data-original = "img/test.png"> 
    <script> 
    var oBtn = document.getElementsByTagName('button')[0]; 
    var oImg = document.images[0];     
    oBtn.onclick = function(){ 
        oImg.src = "img/loading.gif"; 
        if(oImg.dataset){ 
            aftLoadImg(oImg,oImg.dataset.original);     
        }else{ 
            aftLoadImg(oImg,oImg.getAttribute("data-original")); 
        } 

    function aftLoadImg(obj,url){ 
        var oImg = new Image(); 
        oImg.onload = function(){ 
            obj.src = oImg.src; 
        } 
        oImg.src = url; 

    </script>     
    </body> 

    </html> 

    【可视区显示图片】 

    <!DOCTYPE html> 
    <html lang="en"> 
    <head> 
    <meta charset="UTF-8"> 
    <title>Document</title> 
    <style> 
    body{ 
        margin: 0; 

    ul{ 
        margin: 0; 
        padding: 0; 
        list-style: none; 

    img{ 
        border: none; 
        vertical-align: middle; 

    .in{ 
        border: 1px solid black; 
        margin: 10px; 
        text-align: center; 
        height: 400px; 
         400px; 
        float: left; 

    .in img{ 
        height: 400px; 
         400px; 

    </style> 
    </head> 
    <body> 
    <ul class="list"> 
        <li class="in"><img src="img/loading.gif" alt="测试" data-original = "img/img1.gif"></li> 
        <li class="in"><img src="img/loading.gif" alt="测试" data-original = "img/img2.gif"></li> 
        <li class="in"><img src="img/loading.gif" alt="测试" data-original = "img/img3.gif"></li> 
        <li class="in"><img src="img/loading.gif" alt="测试" data-original = "img/img4.gif"></li>     
        <li class="in"><img src="img/loading.gif" alt="测试" data-original = "img/img1.gif"></li> 
        <li class="in"><img src="img/loading.gif" alt="测试" data-original = "img/img2.gif"></li> 
        <li class="in"><img src="img/loading.gif" alt="测试" data-original = "img/img3.gif"></li> 
        <li class="in"><img src="img/loading.gif" alt="测试" data-original = "img/img4.gif"></li>                           
    </ul> 

    <script> 
    var oBtn = document.getElementsByTagName('button')[0]; 
    var aImages = document.images; 
    loadImg(aImages); 
    window.onscroll = function(){ 
        loadImg(aImages); 
    }; 
    function loadImg(arr){ 
        for( var i = 0,len = arr.length; i < len; i++){ 
            if(arr.getBoundingClientRect().top < document.documentElement.clientHeight && !arr.isLoad){ 
                arr.isLoad = true; 
                arr.style.cssText = "transition: ''; opacity: 0;" 
                if(arr.dataset){ 
                    aftLoadImg(arr,arr.dataset.original);     
                }else{ 
                    aftLoadImg(arr,arr.getAttribute("data-original")); 
                } 
                (function(i){ 
                    setTimeout(function(){ 
                        arr.style.cssText = "transition: 1s; opacity: 1;" 
                    },16) 
                })(i); 
            } 
        } 

    function aftLoadImg(obj,url){ 
        var oImg = new Image(); 
        oImg.onload = function(){ 
            obj.src = oImg.src; 
        } 
        oImg.src = url; 


    </script>     
    </body> 
    </html> 

    【效果展示】 

     不能在文章中显示效果,只能自己去测试下了 

    :以上,是用js 自己写的图片懒加载,可以了解懒加载的原理. 当然你也可以直接使用相关插件,如:lazyload.js 

    好的代码像粥一样,都是用时间熬出来的 

     原文:http://www.cnblogs.com/xiaohuochai/p/4859899.html

  • 相关阅读:
    server正式的环境性能测试nginx-php 指着寻求突破的表现
    SICP 锻炼 (1.45)解决摘要
    sdut 3-4 长方形的周长和面积计算
    吉克1111-1114第七周讲座班、家庭作业(动态规划,期限:2014年4月25日本23点-周五晚上,科委飞信通知学生)
    STL源代码分析——STL算法sort排序算法
    伺服驱动器UVW电机电源线相序错误
    1_BLE nRF51822 UART 与 BLE转发
    研制埃博拉疫苗与科学家的奇思秒想
    垂死挣扎还是涅槃重生 -- Delphi XE5 公布会归来感想
    Recover Binary Search Tree -- LeetCode
  • 原文地址:https://www.cnblogs.com/golddemon/p/7594962.html
Copyright © 2011-2022 走看看