图片预加载,封装可复用

html


    
    

0%

css

*{
        margin:0;
        padding:0;
    }
    body,html{
        width: 100%;
        height: 100%;
    }
    a{
        text-decoration: none;
    }
    .btn{
        display: inline-block;
        border:1px solid #ccc;
        background: #fff;
        font-size: 14px;
        padding: 5px 10px;
        margin-right: 35px;
        color: #666;
    }
    .btn:hover{
        background: #eee;
    }
    .box{
        text-align: center;
    }
    .img{
        width: 800px;
        margin-bottom: 20px;
    }
    .loading{
        width: 100%;
        height: 100%;
        position:fixed;
        left: 0;
        top: 0;
        background: #eee;
    }
    .progress{
        font-size: 30px;
        position: absolute;
        top: 50%;
        margin-top: -30px;
        left: 50%;
    }

js




插件内容js

(function($){

         function PreLoad(imgs,options){

            this.imgs = (typeof imgs === "string")?[imgs]:imgs;
            this.opts = $.extend({},PreLoad.DEFAULTS,options);
            //如果没有执行事件,则默认为null,如果有事件则执行options
            this._Unordered();
        };
        //当无参传入时,设置默认值
        PreLoad.DEFAULTS = {
            each:null,//,加载完一张所执行的动作
            all:null//加载完所有图片所执行的动作
        } ;

        PreLoad.prototype._Unordered= function(){

            var imgs = this.imgs,
                opts = this.opts,
                len = imgs.length,
                count = 0;

            $.each(imgs,function(i,val){
                var imgObj = new Image();
                if(typeof val != "string") return;

                $(imgObj).on("load error",function(){
                    
                    opts.each && opts.each(count);

                    if(count >= len-1){

                        opts.all && opts.all();
                    }
                    count++;
                })

                imgObj.src =val; 

            })

        }



         $.extend({
              preload:function(imgs,opts){
                  new PreLoad(imgs,opts);
              }
         })


})(jQuery);

你可能感兴趣的:(图片预加载,封装可复用)