一个轻量级的网页遮罩层jQuery插件

使用jQuery的好处是很多人为它写一些组件,而在项目所需用到功能也都可以找到一些组件去完成。


现在又这样一个需求当用户点击一个按钮后不允许用户进行任何的操作,取而代之的是弹出一个遮罩层显示一个loading提示框,效果如下。


其实这个需求很简单,但很多组件体积相对这个需求来说太大了,在网上瞎溜达了找到了一个还不错的组件,作者是上面也没有写。现在就来分析一下这个组件的源码和使用


/**
 * @部分参数说明
 */
(function($){
    $.fn.extend({
        //主函数
        toggleLoading: function(options){
			// 找到遮罩层
        	var crust = this.children(".x-loading-wanghe");
			// 当前操作的元素
			var thisjQuery = this;
			// 实现toogle(切换遮罩层出现与消失)效果的判断方法
        	if(crust.length>0){
        		if(crust.is(":visible")){
        			crust.fadeOut(500);
        		}else{
	        		crust.fadeIn(500);
        		}
        		return this;
        	}
            // 扩展参数
            var op = $.extend({
                z: 9999,
                msg:'数据加载中...',
                iconUrl:'images/loading.gif',
                width:18,
                height:18,
                borderColor:'#6bc4f5',
                opacity:0.5,
				agentW:thisjQuery.outerWidth(),
				agentH:thisjQuery.outerHeight()
            },options);
			
            if(thisjQuery.css("position")=="static")
            	thisjQuery.css("position","relative");
            //var w = thisjQuery.outerWidth(),h = thisjQuery.outerHeight();
			
            var w = op.agentW,h = op.agentH;							
            crust = $("<div></div>").css({//外壳
                'position': 'absolute',
                'z-index': op.z,
                'display':'none',
                'width':w+'px',
                'height':h+'px',
                'text-align':'center',
                'top': '0px',
                'left': '0px',
                'font-family':'arial',
                'font-size':'12px',
                'font-weight':'500'
            }).attr("class","x-loading-wanghe");
            
            var mask = $("<div></div>").css({//蒙版
                'position': 'absolute',
                'z-index': op.z+1,
                'width':'100%',
                'height':'100%',
                'background-color':'#333333',
                'top': '0px',
                'left': '0px',
                'opacity':op.opacity
            });
            //71abc6,89d3f8,6bc4f5
            var msgCrust = $("<span></span>").css({//消息外壳
	                'position': 'relative',
             	 	'top': (h-30)/2+'px',
	                'z-index': op.z+2,
	                'height':'24px',
	                'display':'inline-block',
	                'background-color':'#cadbe6',
	                'padding':'2px',
	                'color':'#000000',
	                'border':'1px solid '+op.borderColor,
	                'text-align':'left',
	                'opacity':0.9
	            });
            var msg = $("<span>"+op.msg+"</span>").css({//消息主体
            		'position': 'relative',
            		'margin': '0px',
	                'z-index': op.z+3,
	                'line-height':'22px',
	                'height':'22px',
	                'display':'inline-block',
	                'background-color':'#efefef',
	                'padding-left':'25px',
	                'padding-right':'5px',
	                'border':'1px solid '+op.borderColor,
	                'text-align':'left',
	                'text-indent':'0'
            	});
			var msgIcon =  $("<img src="+op.iconUrl+" />").css({//图标
					'position': 'absolute',
	                'top': '3px',
	                'left':'3px',
	                'z-index': op.z+4,
	                'width':'18px',
	                'height':'18px'
            	});	
			// 拼装遮罩层
            msg.prepend(msgIcon);
        	msgCrust.prepend(msg);
        	crust.prepend(mask);
        	crust.prepend(msgCrust);
            thisjQuery.prepend(crust);
           	// alert(thisjQuery.html());
            crust.fadeIn(500);
            //模态设置
            return this;
        }
    });
})(jQuery);

相关配置

配置&configure
全部配置默认值说明
z:9999图层z-index,当蒙版遮罩不住时候适当增大其值
msg:数据加载中...提示信息
iconUrl:images/loading.gif提示图片url
height:18图标默认高(px)
width:18图标默认宽(px)
borderColor#6bc4f5提示的边框颜色
opacity:0.5蒙版的透明度
agentW:当前元素的宽度蒙版的宽度
agentH:当前元素的高度蒙版的高度


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值