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 相关文章推荐
jquery 实现的全选和反选
Apr 15 Javascript
javascript document.compatMode兼容性
Feb 23 Javascript
解析Javascript小括号“()”的多义性
Dec 03 Javascript
简体中文转换繁体中文(实现代码)
Dec 25 Javascript
Javascript图片上传前的本地预览实例
Jun 16 Javascript
JS获得图片alt信息的方法
Apr 01 Javascript
使用AOP改善javascript代码
May 01 Javascript
jquery实现加载进度条提示效果
Nov 23 Javascript
JavaScript用构造函数如何获取变量的类型名
Dec 23 Javascript
纯JS单页面赛车游戏制作代码分享
Mar 03 Javascript
Angular.js去除页面中显示的空行方法示例
Mar 30 Javascript
vue实现短信验证码登录功能(流程详解)
Dec 10 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
PHP+MYSQL 出现乱码的解决方法
2008/08/08 PHP
PHP实时统计中文字数和区别
2019/02/28 PHP
laravel unique验证、确认密码confirmed验证以及密码修改验证的方法
2019/10/16 PHP
AJAX架构之Dojo篇
2007/04/10 Javascript
使用jQuery的ajax功能实现的RSS Reader 代码
2009/09/03 Javascript
使用jquery插件实现图片延迟加载技术详细说明
2011/03/12 Javascript
jquery的冒泡事件的阻止与允许(三种实现方法)
2013/02/01 Javascript
各种页面定时跳转(倒计时跳转)代码总结
2013/10/24 Javascript
Node.js 实现简单小说爬虫实例
2016/11/18 Javascript
JavaScript+Html5实现按钮复制文字到剪切板功能(手机网页兼容)
2017/03/30 Javascript
javascript 封装Date日期类实例详解
2017/05/28 Javascript
js Date()日期函数浏览器兼容问题解决方法
2017/09/12 Javascript
JS实现的全排列组合算法示例
2017/10/09 Javascript
利用npm 安装删除模块的方法
2018/05/15 Javascript
浅谈对于react-thunk中间件的简单理解
2019/05/01 Javascript
小程序如何在不同设备上自适应生成海报的实现方法
2019/08/20 Javascript
如何使用Jquery动态生成二级选项列表
2020/02/06 jQuery
解决vue scoped html样式无效的问题
2020/10/24 Javascript
[53:15]Mineski vs iG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
解决Scrapy安装错误:Microsoft Visual C++ 14.0 is required...
2017/10/01 Python
pandas DataFrame数据转为list的方法
2018/04/11 Python
pandas 条件搜索返回列表的方法
2018/10/30 Python
解决Django一个表单对应多个按钮的问题
2019/07/18 Python
浅析使用Python搭建http服务器
2019/10/27 Python
Python注释、分支结构、循环结构、伪“选择结构”用法实例分析
2020/01/09 Python
使用Python防止SQL注入攻击的实现示例
2020/05/21 Python
CSS3实现同时执行倾斜和旋转的动画效果
2016/10/27 HTML / CSS
美国购买体育、音乐会和剧院门票网站:SelectATicket
2019/09/08 全球购物
Solaris操作系统的线程机制
2015/07/28 面试题
3.12植树节活动总结2014
2014/03/13 职场文书
护士找工作求职信
2014/07/02 职场文书
大学活动总结模板
2014/07/10 职场文书
优秀班主任事迹材料
2014/12/16 职场文书
企业开业庆典答谢词
2015/01/20 职场文书
调解书格式范本
2015/05/20 职场文书
《勇者辞职不干了》ED主题曲无字幕动画MV公开
2022/04/13 日漫