• 图片懒加载——介绍


    图片懒加载 

    定义 



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



    【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

  • 相关阅读:
    【STM32F429】第11章 ThreadX中断优先级配置,含BasePri配置方案
    【STM32H7】第10章 ThreadX任务栈大小确定及其溢出检测
    【STM32F429】第10章 ThreadX任务栈大小确定及其溢出检测
    《安富莱嵌入式周报》第216期:2021.06.07--2021.06.13
    嵌入式新闻早班车-第3期
    嵌入式新闻早班车-第2期
    Keil Studio已经确定为MDK下一代开发工具,更多功能将在今年年底上线
    嵌入式新闻早班车-第1期
    【STM32H7的DSP教程】第32章 STM32H7的实数FFT的逆变换(支持单精度和双精度)
    【STM32F429的DSP教程】第32章 STM32F429的实数FFT的逆变换(支持单精度和双精度)
  • 原文地址:https://www.cnblogs.com/golddemon/p/7594962.html
Copyright © 2020-2023  润新知