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 相关文章推荐
[原创]图片分页查看
Aug 28 Javascript
js验证表单大全
Nov 25 Javascript
脚本吧 - 幻宇工作室用到js,超强推荐base.js
Dec 23 Javascript
IE 当eval遇上function的处理
Aug 09 Javascript
javascript (用setTimeout而非setInterval)
Dec 28 Javascript
php+js实现倒计时功能
Jun 02 Javascript
jQuery标签替换函数replaceWith()的使用例子
Aug 28 Javascript
基于Jquery插件实现跨域异步上传文件功能
Apr 26 Javascript
js事件源window.event.srcElement兼容性写法(详解)
Nov 25 Javascript
AngularJS中的按需加载ocLazyLoad示例
Jan 11 Javascript
Javascript 链式作用域详细介绍
Feb 23 Javascript
在react项目中使用antd的form组件,动态设置input框的值
Oct 24 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的日期与时间函数技巧
2008/04/24 PHP
PHP+Mysql+jQuery实现动态展示信息
2011/10/08 PHP
PHP防止跨域提交表单
2013/11/01 PHP
php结合正则获取字符串中数字
2015/06/19 PHP
PHP类相关知识点实例总结
2016/09/28 PHP
PHP实现基于栈的后缀表达式求值功能
2017/11/10 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
2018/02/07 PHP
根据一段代码浅谈Javascript闭包
2010/12/14 Javascript
jQuery中ajax的load()与post()方法实例详解
2016/01/05 Javascript
jquery mobile开发常见问题分析
2016/01/21 Javascript
Vue官方文档梳理之全局配置
2017/11/22 Javascript
Vue.js添加组件操作示例
2018/06/13 Javascript
从零开始封装自己的自定义Vue组件
2018/10/09 Javascript
ES6 Proxy实现Vue的变化检测问题
2019/06/11 Javascript
解决vue中的无限循环问题
2020/07/27 Javascript
js实现计算器功能
2020/08/10 Javascript
Python入门_条件控制(详解)
2017/05/16 Python
python3.6 实现AES加密的示例(pyCryptodome)
2018/01/10 Python
对python requests的content和text方法的区别详解
2018/10/11 Python
python实现简单加密解密机制
2019/03/19 Python
基于python判断字符串括号是否闭合{}[]()
2020/09/21 Python
使用iframe+postMessage实现页面跨域通信的示例代码
2020/01/14 HTML / CSS
html5小程序飞入购物车(抛物线绘制运动轨迹点)
2020/10/19 HTML / CSS
Stefania Mode英国:奢华设计师和时尚服装
2017/10/23 全球购物
联想澳大利亚官网:Lenovo Australia
2018/01/18 全球购物
英国电气世界:Electrical World
2019/09/08 全球购物
Abbott Lyon官网:女士手表、珠宝及配件
2020/12/26 全球购物
颇特女士:NET-A-PORTER(直邮中国)
2020/07/11 全球购物
Unix如何在一行中运行多个命令
2015/05/29 面试题
农药学硕士毕业生自荐信
2013/09/25 职场文书
大学生职业生涯规划书的基本内容
2014/01/06 职场文书
高中生家长会演讲稿
2014/01/14 职场文书
学习雷锋精神演讲稿
2014/05/10 职场文书
品牌服务方案
2014/06/03 职场文书
开展党的群众路线教育实践活动个人对照检查材料
2014/11/05 职场文书
幼儿园六一主持词
2015/06/30 职场文书