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 相关文章推荐
js滚动条多种样式,推荐
Feb 05 Javascript
基于Jquery+Ajax+Json的高效分页实现代码
Oct 29 Javascript
Package.js  现代化的JavaScript项目make工具
May 23 Javascript
浅谈Javascript事件处理程序的几种方式
Jun 27 Javascript
js鼠标悬浮出现遮罩层的方法
Jan 28 Javascript
jqueryMobile使用示例分享
Jan 12 Javascript
详解vue-cli快速构建项目以及引入bootstrap、jq
May 26 Javascript
浅谈webpack打包生成的bundle.js文件过大的问题
Feb 22 Javascript
浅谈React 服务器端渲染的使用
May 08 Javascript
js实现点击展开隐藏效果(实例代码)
Sep 28 Javascript
js实现页面多个日期时间倒计时效果
Jun 20 Javascript
vue实现抽屉弹窗效果
Nov 15 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
1982年日本摄影师镜头下的中国孩子 那无忧无虑的童年
2020/03/12 杂记
php运行时动态创建函数的方法
2015/03/16 PHP
php使用cookie实现记住用户名和密码实现代码
2015/04/27 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
JQuery读取XML文件数据并显示的实现代码
2009/12/16 Javascript
2010年最佳jQuery插件整理
2010/12/06 Javascript
jQuery学习笔记之jQuery选择器的使用
2010/12/22 Javascript
js判断60秒以及倒计时示例代码
2014/01/24 Javascript
jquery插件开发之实现jquery手风琴功能分享
2014/03/10 Javascript
JavaScript异步编程Promise模式的6个特性
2014/04/03 Javascript
玩转方法:call和apply
2014/05/08 Javascript
jQuery学习笔记之jQuery.extend(),jQuery.fn.extend()分析
2014/06/09 Javascript
如何高效率去掉js数组中的重复项
2016/04/12 Javascript
Bootstrap零基础入门教程(三)
2016/07/18 Javascript
详解Vue 全局引入bass.scss 处理方案
2018/03/26 Javascript
angularjs1.X 重构controller 的方法小结
2019/08/15 Javascript
vuex实现数据状态持久化
2019/11/11 Javascript
浅谈webpack构建工具配置和常用插件总结
2020/05/11 Javascript
[04:46]2018年度玩家喜爱的电竞媒体-完美盛典
2018/12/16 DOTA
[01:04:08]完美世界DOTA2联赛PWL S3 INK ICE vs GXR 第一场 12.16
2020/12/18 DOTA
Python安装pycurl失败的解决方法
2018/10/15 Python
Python实现简易过滤删除数字的方法小结
2019/01/09 Python
python django model联合主键的例子
2019/08/06 Python
python读取当前目录下的CSV文件数据
2020/03/11 Python
keras中的loss、optimizer、metrics用法
2020/06/15 Python
Python logging模块异步线程写日志实现过程解析
2020/06/30 Python
Keras 中Leaky ReLU等高级激活函数的用法
2020/07/05 Python
CSS3基础(RGBa、text-shadow、box-shadow、border-radius)
2012/11/13 HTML / CSS
红色连衣裙精品店:Red Dress Boutique
2018/08/11 全球购物
自我评价怎么写好呢?
2013/12/05 职场文书
总会计师岗位职责
2014/02/19 职场文书
村创先争优活动总结
2014/08/28 职场文书
学校感恩节活动策划方案
2014/10/06 职场文书
学校元旦晚会开场白
2014/12/14 职场文书
mysql外连接与内连接查询的不同之处
2021/06/03 MySQL
教你使用Ubuntu搭建DNS服务器
2022/09/23 Servers