jQuery遮罩层效果实例分析


Posted in Javascript onJanuary 14, 2016

本文实例分析了jQuery遮罩层效果。分享给大家供大家参考,具体如下:

先来看看示例代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh" lang="zh" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<mce:script type="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>
<style mce_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:script type="text/javascript">
<!--
function showBox() {
var bH = $(window).height();
var bW = $(window).width();
$("#full_box").css({width:bW,height:bH,display:"block"});
var objWH = getObjWh('dialog');
var tbT = objWH.split("|")[0] + "px";
var tbL = objWH.split("|")[1] + "px";
$("#dialog").css({top:tbT,left:tbL,display:"block"});
$("#dialog_content").html("<div style="text-align:center" mce_style="text-align:center">正在加载,请稍后...</div>");
$(window).scroll(function (){ resetBox();});
$(window).resize(function (){ resetBox();});
}
function resetBox() {
var full_box = $("#full_box").css("display");
if (full_box == 'block') {
var bH = $(window).height();
var bW = $(window).width();
var objWH = getObjWh('dialog');
var tbT = objWH.split("|")[0] + "px";
var tbL = objWH.split("|")[1] + "px";
$("#dialog").css({top:tbT,left:tbL,display:"block"});
}
}
function getObjWh(obj) {
var st = $(window).scrollTop();
var sl = $(window).scrollLeft();
var ch = $(window).height();
var cw = $(window).width();
var objH = $("#"+obj).height();
var objW = $("#"+obj).width();
var objT = Number(st) + (Number(ch) - Number(objH))/2;
var objL = Number(sl) + (Number(cw) - Number(objW))/2;
return objT +"|" +objL;
}
function closeBox() {
$("#dialog").css("display","none");
$("#full_box").css("display","none");
}
// -->
</mce:script>
<button id="click" onclick="showBox()">click</button>
<div id="full_box"></div>
<div id="dialog">
<div id="dialog_content"></div>
<div style="text-align:center;" mce_style="text-align:center;">
<a href="#" mce_href="#" onclick="closeBox();">关闭</a>
</div>
</div>
</body>
</html>

其实遮罩层原理很简单。

一个div 遮住下面的内容。

其中比较关键的一个css 样式是

x-index: 整数值

数值越大在越上层,越小就在越下层,可以是负数。

上面的js 代码有部分错误。下面已经修正。

//显示层
function showBox(id) {
    var bH = document.body.offsetHeight;//$(window).height();
    var bW = document.body.offsetWidth;//$(window).width();
    if (bH < $(window).height())
    {
      bH = $(window).height();
    }
    $("#full_box").css({width:bW,height:bH,display:"block"});
    var objWH = getObjWh('dialog');
    var tbT = objWH.split("|")[0] + "px";
    var tbL = objWH.split("|")[1] + "px";
    if(id=='template'){
      $("#div_template").show();
    }else if(id == 'history'){
      $("#div_history").show();
    }else{
      $("#tree_"+id).show();
    }
    $(window).scroll(function (){ resetBox(id);});
    $(window).resize(function (){ resetBox(id);});
}
//重置层
function resetBox(id) {
    var full_box = $("#full_box").css("display");
    if (full_box == 'block') {
      var bH = document.body.offsetHeight;//$(window).height();
      var bW = document.body.offsetWidth;//$(window).width();
      if (bH < $(window).height())
      {
        bH = $(window).height();
      }
      var objWH = getObjWh('dialog');
      var tbT = objWH.split("|")[0] + "px";
      var tbL = objWH.split("|")[1] + "px";
      $(".dialog").css({top:tbT,left:tbL});
      $("#full_box").css({width:bW,height:bH});
    }
}
//获得层参数
function getObjWh(obj) {
    var st = $(window).scrollTop();
    var sl = $(window).scrollLeft();
    var ch = $(window).height();
    var cw = $(window).width();
    var objH = $("#"+obj).height();
    var objW = $("#"+obj).width();
    var objT = Number(st) + (Number(ch) - Number(objH))/2;
    var objL = Number(sl) + (Number(cw) - Number(objW))/2;
    return objT +"|" +objL;
}
//关闭层
function closeBox(id) {
    if(id == 'template'){
       $("#div_template").hide();
    }else if(id == 'history'){
      $("#div_history").hide();
    }else{
      $("#tree_"+id).hide();
    }
    $("#full_box").hide();
}

希望本文所述对大家jQuery程序设计有所帮助。

Javascript 相关文章推荐
javascript操作cookie的文章(设置,删除cookies)
Apr 01 Javascript
c#和Javascript操作同一json对象的实现代码
Jan 17 Javascript
使用JavaScript和C#中获得referer
Nov 14 Javascript
基于JavaScript实现div层跟随滚动条滑动
Jan 12 Javascript
JavaScript 中对象的深拷贝
Dec 04 Javascript
Bootstrap CSS组件之按钮下拉菜单
Dec 17 Javascript
简单实现jQuery弹幕效果
May 06 jQuery
JS实现仿饿了么在浏览器标签页失去焦点时网页Title改变
Jun 01 Javascript
浅谈mint-ui loadmore组件注意的问题
Nov 08 Javascript
js实现删除li标签一行内容
Apr 16 Javascript
js仿360开机效果
Dec 26 Javascript
解决elementUI 切换tab后 el_table 固定列下方多了一条线问题
Jul 19 Javascript
JavaScript面向对象之私有静态变量实例分析
Jan 14 #Javascript
浏览器环境下JavaScript脚本加载与执行探析之defer与async特性
Jan 14 #Javascript
js实现input密码框提示信息的方法(附html5实现方法)
Jan 14 #Javascript
jQuery div拖拽用法实例
Jan 14 #Javascript
javascript检测flash插件是否被禁用的方法
Jan 14 #Javascript
分享jQuery插件的学习笔记
Jan 14 #Javascript
jQuery时间插件jquery.clock.js用法实例(5个示例)
Jan 14 #Javascript
You might like
Fine Uploader文件上传组件应用介绍
2013/01/06 PHP
PHP调用Linux的命令行执行文件压缩命令
2013/01/27 PHP
解析php dirname()与__FILE__常量的应用
2013/06/24 PHP
PHP操作文件的一些基本函数使用示例
2014/11/18 PHP
Yii CGridView用法实例详解
2016/07/12 PHP
php smtp实现发送邮件功能
2017/06/22 PHP
PHP实现的mongoDB数据库操作类完整实例
2018/04/10 PHP
PHP折半(二分)查找算法实例分析
2018/05/12 PHP
ThinkPHP5.1框架数据库链接和增删改查操作示例
2019/08/03 PHP
PHP哈希表实现算法原理解析
2020/12/11 PHP
javascript学习笔记(三) String 字符串类型介绍
2012/06/19 Javascript
jQuery mobile类库使用时加载导航历史的方法简介
2015/12/04 Javascript
如何使用AngularJs打造权限管理系统【简易型】
2016/05/09 Javascript
Javascript实现图片不间断滚动的代码
2016/06/22 Javascript
jQuery实现表格文本框淡入更改值后淡出效果
2016/09/27 Javascript
easyui combotree加载静态数据问题(选不上)解决方法
2016/12/26 Javascript
JavaScript自定义文本框光标
2017/03/05 Javascript
JavaScript实现的浏览器下载文件的方法
2017/08/09 Javascript
Javascript实现动态时钟效果
2018/11/17 Javascript
vue动态绑定class的几种常用方式小结
2019/05/21 Javascript
深入理解Vue keep-alive及实践总结
2019/08/21 Javascript
vue和小程序项目中使用iconfont的方法
2020/05/19 Javascript
python模块之re正则表达式详解
2017/02/03 Python
python实现跨excel的工作表sheet之间的复制方法
2018/05/03 Python
python+opencv像素的加减和加权操作的实现
2019/07/14 Python
Python ellipsis 的用法详解
2020/11/20 Python
智能家居、吸尘器、滑板车、电动自行车网上购物:Geekmaxi
2021/01/18 全球购物
医学护理系毕业生求职信
2013/10/01 职场文书
《燕子》教学反思
2014/02/18 职场文书
各营销点岗位职责范本
2014/03/05 职场文书
诚信的演讲稿范文
2014/05/12 职场文书
2014领导班子四风问题对照检查材料思想汇报
2014/09/21 职场文书
再读《皇帝的新衣》的读后感悟!
2019/08/07 职场文书
详解Python 3.10 中的新功能和变化
2021/04/28 Python
详解Golang如何优雅的终止一个服务
2022/03/21 Golang
简单聊聊Golang中defer预计算参数
2022/03/25 Golang