jQuery遮罩层实现方法实例详解(附遮罩层插件)


Posted in Javascript onDecember 08, 2015

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

1 背景半透明遮罩层样式

需要一个黑色(当然也可以其他)背景,且须设置为绝对定位,以下是项目中用到的css样式:

/* 半透明的遮罩层 */
#overlay {
  background: #000;
  filter: alpha(opacity=50); /* IE的透明度 */
  opacity: 0.5; /* 透明度 */
  display: none;
  position: absolute;
  top: 0px;
  left: 0px;
  width: 100%;
  height: 100%;
  z-index: 100; /* 此处的图层要大于页面 */
  display:none;
}

2 jQuery实现遮罩

/* 显示遮罩层 */
function showOverlay() {
  $("#overlay").height(pageHeight());
  $("#overlay").width(pageWidth());
  // fadeTo第一个参数为速度,第二个为透明度
  // 多重方式控制透明度,保证兼容性,但也带来修改麻烦的问题
  $("#overlay").fadeTo(200, 0.5);
}
/* 隐藏覆盖层 */
function hideOverlay() {
  $("#overlay").fadeOut(200);
}
/* 当前页面高度 */
function pageHeight() {
  return document.body.scrollHeight;
}
/* 当前页面宽度 */
function pageWidth() {
  return document.body.scrollWidth;
}

3 提示框

遮罩的目的无非让人无法操作内容,突出提示框,而提示框可参考上面的制作,z-index比遮罩层更高便可。主要问题是,如何控制提示框在浏览器居中。

/* 定位到页面中心 */
function adjust(id) {
  var w = $(id).width();
  var h = $(id).height();
  var t = scrollY() + (windowHeight()/2) - (h/2);
  if(t < 0) t = 0;
  var l = scrollX() + (windowWidth()/2) - (w/2);
  if(l < 0) l = 0;
  $(id).css({left: l+'px', top: t+'px'});
}
//浏览器视口的高度
function windowHeight() {
  var de = document.documentElement;
  return self.innerHeight || (de && de.clientHeight) || document.body.clientHeight;
}
//浏览器视口的宽度
function windowWidth() {
  var de = document.documentElement;
  return self.innerWidth || (de && de.clientWidth) || document.body.clientWidth
}
/* 浏览器垂直滚动位置 */
function scrollY() {
  var de = document.documentElement;
  return self.pageYOffset || (de && de.scrollTop) || document.body.scrollTop;
}
/* 浏览器水平滚动位置 */
function scrollX() {
  var de = document.documentElement;
  return self.pageXOffset || (de && de.scrollLeft) || document.body.scrollLeft;
}

补充:

jQuery简单遮罩层插件:

jQuery代码:

(function ($) {
  $.fn.ShowMask = function (options) {
    var defaults = {
      top: 150,
      left: 200
    }
    var options = $.extend(defaults, options);
    $("html").append('<div id="ui-mask"></div><div id="ui-mask-div" style="z-index: 99999;position: fixed;top:' + options.top + 'px;left:' + options.left + 'px;"><img src="Images/ui-loading.gif" alt="" /><span>操作正在进行中,请耐心等待......</span></div>')
    _this_ = $("#ui-mask");
    _this_.height($(document).height())
    _this_.show();
  };
  $.fn.HideMask = function (options) {
    _this_ = $("#ui-mask");
    _this_.remove();
  };
})(jQuery);

css样式:

#ui-mask
{
  background-color: #666;
  position: absolute;
  z-index: 9999;
  left: 0;
  top: 0;
  display: none;
  width: 100%;
  height: 100%;
  opacity: 0.5;
  filter: alpha(opacity=50);
  -moz-opacity: 0.5;
}
#ui-mask-div img
{
  width: 50px;
  height: 50px;
  float: left;
}
#ui-mask-div span
{
  height: 50px;
  line-height: 50px;
  display: block;
  float: left;
  color: Red;
  font-weight: bold;
  margin-left: 5px;
}

使用方法:

function btn_save()
{
  $(this).ShowMask();
  $.post('url',null,function(d,s){
    $(this).HideMask();
  });
}

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

Javascript 相关文章推荐
浅析JQuery UI Dialog的样式设置问题
Dec 18 Javascript
JavaScript中一个奇葩的IE浏览器判断方法
Apr 16 Javascript
jQuery简单图表peity.js使用示例
May 02 Javascript
JavaScript AOP编程实例
Jun 16 Javascript
js中字符串编码函数escape()、encodeURI()、encodeURIComponent()区别详解
Apr 01 Javascript
移动端web滚动分页的实现方法
May 05 Javascript
JS 60秒后重新发送验证码的实例讲解
Jul 26 Javascript
vue router 组件的高级应用实例代码
Apr 08 Javascript
vue router 传参获取不到的解决方式
Nov 13 Javascript
vue 组件销毁并重置的实现
Jan 13 Javascript
vscode 配置vue+vetur+eslint+prettier自动格式化功能
Mar 23 Javascript
three.js着色器材质的内置变量示例详解
Aug 16 Javascript
jQuery实现的简单提示信息插件
Dec 08 #Javascript
JS组件Bootstrap Table表格多行拖拽效果实现代码
Dec 08 #Javascript
AngularJS实现全选反选功能
Dec 08 #Javascript
JS操作XML实例总结(加载与解析XML文件、字符串)
Dec 08 #Javascript
JS组件Bootstrap Table表格行拖拽效果实现代码
Aug 27 #Javascript
JS获取月份最后天数、最大天数与某日周数的方法
Dec 08 #Javascript
AngularJS Module方法详解
Dec 08 #Javascript
You might like
PHP 第二节 数据类型之数组
2012/04/28 PHP
用C/C++扩展你的PHP 为你的php增加功能
2012/09/06 PHP
php导入导出excel实例
2013/10/25 PHP
ThinkPHP使用心得分享-上传类UploadFile的使用
2014/05/15 PHP
php禁止直接从浏览器输入地址访问.php文件的方法
2014/11/04 PHP
PHP实现的数组和XML文件相互转换功能示例
2018/03/15 PHP
Alliance vs AM BO3 第二场2.13
2021/03/10 DOTA
js中格式化日期时间型数据函数代码
2010/11/08 Javascript
js实现文字跟随鼠标移动而移动的方法
2015/02/28 Javascript
javascript实现的闭包简单实例
2015/07/17 Javascript
jquery实现滑屏大图定时收缩为小banner图片的广告代码
2015/09/02 Javascript
一道优雅面试题分析js中fn()和return fn()的区别
2016/07/05 Javascript
基于jQuery实现仿微博发布框字数提示
2016/07/27 Javascript
Javascript基础回顾之(二) js作用域
2017/01/31 Javascript
vue根据进入的路由进行原路返回的方法
2018/09/26 Javascript
vue + element-ui的分页问题实现
2018/12/17 Javascript
如何在JavaScript中优雅的提取循环内数据详解
2019/03/04 Javascript
JS把字符串格式的时间转换成几秒前、几分钟前、几小时前、几天前等格式
2019/07/10 Javascript
element form 校验数组每一项实例代码
2019/10/10 Javascript
对vue中的事件穿透与禁止穿透实例详解
2019/10/28 Javascript
NUXT SSR初级入门笔记(小结)
2019/12/16 Javascript
JavaScript enum枚举类型定义及使用方法
2020/05/15 Javascript
antd Select下拉菜单动态添加option里的内容操作
2020/11/02 Javascript
[01:15:36]加油刀塔第二期网络版
2014/08/09 DOTA
Python实现抓取城市的PM2.5浓度和排名
2015/03/19 Python
Python 16进制与中文相互转换的实现方法
2018/07/09 Python
win10 64bit下python NLTK安装教程
2018/09/19 Python
Python中几种属性访问的区别与用法详解
2018/10/10 Python
Python Selenium 之关闭窗口close与quit的方法
2019/02/13 Python
HTML5给汉字加拼音收起展开组件的实现代码
2020/04/08 HTML / CSS
JustFab加拿大:女鞋、靴子、手袋和服装在线
2018/05/18 全球购物
Bodum官网:咖啡和茶壶、玻璃器皿、厨房电器等
2018/08/01 全球购物
家长通知书教师评语
2014/04/17 职场文书
代理人委托书
2014/08/01 职场文书
2015年暑期社会实践活动总结
2015/03/27 职场文书
python 安全地删除列表元素的方法
2022/03/16 Python