jQuery遮罩层效果实例分析
本文实例分析了jQuery遮罩层效果。分享给大家供大家参考,具体如下:
先来看看示例代码:
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml"xml:lang="zh"lang="zh"dir="ltr">
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
</head>
<body>
<mce:scripttype="text/javascript"src="jquery-1.4.4.min.js"mce_src="jquery-1.4.4.min.js"></mce:script>
<title>Example|xHTML1.0</title>
<mce:style>
<!--*{
font-family:Arial,Helvetica,sans-serif;
font-size:12px;
}
#full_box{
background-color:gray;
display:none;
z-index:3;
position:absolute;
left:0px;
top:0px;
filter:Alpha(Opacity=30);
/*IE*/
-moz-opacity:0.4;
/*Moz+FF*/
opacity:0.4;
}
#dialog{
position:absolute;
width:200px;
height:200px;
background:#F00;
display:none;
z-index:5;
}
-->
</mce:style>
<stylemce_bogus="1">
*{
font-family:Arial,Helvetica,sans-serif;
font-size:12px;
}
#full_box{
background-color:gray;
display:none;
z-index:3;
position:absolute;
left:0px;
top:0px;
filter:Alpha(Opacity=30);
/*IE*/
-moz-opacity:0.4;
/*Moz+FF*/
opacity:0.4;
}
#dialog{
position:absolute;
width:200px;
height:200px;
background:#F00;
display:none;
z-index:5;
}
</style>
<mce:scripttype="text/javascript">
<!--
functionshowBox(){
varbH=$(window).height();
varbW=$(window).width();
$("#full_box").css({width:bW,height:bH,display:"block"});
varobjWH=getObjWh('dialog');
vartbT=objWH.split("|")[0]+"px";
vartbL=objWH.split("|")[1]+"px";
$("#dialog").css({top:tbT,left:tbL,display:"block"});
$("#dialog_content").html("<divstyle="text-align:center"mce_style="text-align:center">正在加载,请稍后...</div>");
$(window).scroll(function(){resetBox();});
$(window).resize(function(){resetBox();});
}
functionresetBox(){
varfull_box=$("#full_box").css("display");
if(full_box=='block'){
varbH=$(window).height();
varbW=$(window).width();
varobjWH=getObjWh('dialog');
vartbT=objWH.split("|")[0]+"px";
vartbL=objWH.split("|")[1]+"px";
$("#dialog").css({top:tbT,left:tbL,display:"block"});
}
}
functiongetObjWh(obj){
varst=$(window).scrollTop();
varsl=$(window).scrollLeft();
varch=$(window).height();
varcw=$(window).width();
varobjH=$("#"+obj).height();
varobjW=$("#"+obj).width();
varobjT=Number(st)+(Number(ch)-Number(objH))/2;
varobjL=Number(sl)+(Number(cw)-Number(objW))/2;
returnobjT+"|"+objL;
}
functioncloseBox(){
$("#dialog").css("display","none");
$("#full_box").css("display","none");
}
//-->
</mce:script>
<buttonid="click"onclick="showBox()">click</button>
<divid="full_box"></div>
<divid="dialog">
<divid="dialog_content"></div>
<divstyle="text-align:center;"mce_style="text-align:center;">
<ahref="#"mce_href="#"onclick="closeBox();">关闭</a>
</div>
</div>
</body>
</html>
其实遮罩层原理很简单。
一个div遮住下面的内容。
其中比较关键的一个css样式是
x-index:整数值
数值越大在越上层,越小就在越下层,可以是负数。
上面的js代码有部分错误。下面已经修正。
//显示层
functionshowBox(id){
varbH=document.body.offsetHeight;//$(window).height();
varbW=document.body.offsetWidth;//$(window).width();
if(bH<$(window).height())
{
bH=$(window).height();
}
$("#full_box").css({width:bW,height:bH,display:"block"});
varobjWH=getObjWh('dialog');
vartbT=objWH.split("|")[0]+"px";
vartbL=objWH.split("|")[1]+"px";
if(id=='template'){
$("#div_template").show();
}elseif(id=='history'){
$("#div_history").show();
}else{
$("#tree_"+id).show();
}
$(window).scroll(function(){resetBox(id);});
$(window).resize(function(){resetBox(id);});
}
//重置层
functionresetBox(id){
varfull_box=$("#full_box").css("display");
if(full_box=='block'){
varbH=document.body.offsetHeight;//$(window).height();
varbW=document.body.offsetWidth;//$(window).width();
if(bH<$(window).height())
{
bH=$(window).height();
}
varobjWH=getObjWh('dialog');
vartbT=objWH.split("|")[0]+"px";
vartbL=objWH.split("|")[1]+"px";
$(".dialog").css({top:tbT,left:tbL});
$("#full_box").css({width:bW,height:bH});
}
}
//获得层参数
functiongetObjWh(obj){
varst=$(window).scrollTop();
varsl=$(window).scrollLeft();
varch=$(window).height();
varcw=$(window).width();
varobjH=$("#"+obj).height();
varobjW=$("#"+obj).width();
varobjT=Number(st)+(Number(ch)-Number(objH))/2;
varobjL=Number(sl)+(Number(cw)-Number(objW))/2;
returnobjT+"|"+objL;
}
//关闭层
functioncloseBox(id){
if(id=='template'){
$("#div_template").hide();
}elseif(id=='history'){
$("#div_history").hide();
}else{
$("#tree_"+id).hide();
}
$("#full_box").hide();
}
更多关于jQuery特效相关内容感兴趣的读者可查看本站专题:《jQuery常见经典特效汇总》
希望本文所述对大家jQuery程序设计有所帮助。