JS中关于图片的懒加载方式

采用JavaScript

  • 获取到所有的img标签,然后遍历获取到原有的src内容,置换为占位图,在onload事件中替换上述保存的src内容
var images=document.getElementsByTagName("img");
    for(var i=0;i<images.length;i++){
        var oldSrc =  images[i].src; // 图片的src
        images[i].src = "CommonHTML/LazyLoad/ImgLoading.gif"; // 图片默认加载的内容
        images[i].onload = function () { // 加载时,用src替换默认图片
        this.src = oldSrc; 
    }
}
  • 使用onload、闭包-
<body>
   <img id=\"lazy\" src=\"ForumDetailHtmlTemplate/ImgLoading.gif\" width=\"640\" heigh=\"480\" />
</body>
<script type="text/javascript">
    function loadImg(url,callback){
        var oImg = new Image(); // 创建一个Image对象,实现图片的预加载
        oImg.width = 100;
        oImg.height = 100;
        oImg.onload = function(){
            // 图片下载完毕时异步调用callback函数
            callback(oImg);  
            oImg.onload = null;  // 防止gif图返回进行回调
        };
        
        oImg.src = url; // 先进行onload的绑定,再赋值给src
    }
    
    loadImg('http://img4.imgtn.bdimg.com/it/u=1350614941,725003865&fm=23&gp=0.jpg?1=59',function(oim){
        document.getElementById('lazy').src = oim.src;
        // console.log(oim.src);        
    });

采用第三方

==注意== 是使用之前需要导入lazyload.min.js文件,而且jquery.js需要在之前导入、如下

    <script type="text/javascript"  src="CommonHTML/JavaScript/jquery.min.js"></script>
    <script type="text/javascript"  src="CommonHTML/JavaScript/jquery.lazyload.min.js"></script>

使用过程

<script type="text/javascript">
    $(function() {
        $('img').each(function () {
            var orgi = $(this).attr('src');
            
            $(this).attr("src","CommonHTML/LazyLoad/ImgLoading.gif");
            $(this).attr('data-original',orgi);
            $(this).lazyload({
                effect : "fadeIn",
                event : ""
            });
        });
    });

data-original 为目标url ,原有的src图像为占位符。
==注意== 图像的标签中需要加入data-original才可以生效。如果动态加入,如上述代码会发生莫名其妙的问题,有些图片会出来,有些不会。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,859评论 18 139
  • HTML5面试题总结1.基础问题 = 和 == 和 === 的区别?= : 用于赋值 == : 用于判断 === ...
    LorenaLu阅读 1,205评论 0 4
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,935评论 6 342
  • “我没有职位给你,但我身边有个位置给你。”这句话从金大叔嘴里说出来,总感觉油腻腻哒。 顾胜男,迷糊、邋遢、莽撞 ...
    ZLY_1c2b阅读 209评论 0 0
  • 初升高的暑假,我出过一场事故,简单描述就是坠崖。大约从七八米高的山崖自由落体后砸碎了两块石头,留下了几道难看的伤疤...
    S菩提只吃半碗饭阅读 256评论 0 1