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 相关文章推荐
Javascript操作select方法大全[新增、修改、删除、选中、清空、判断存在等]
Sep 26 Javascript
js导出table数据到excel即导出为EXCEL文档的方法
Oct 10 Javascript
自定义函数实现IE7与IE8不兼容js中trim函数的问题
Feb 03 Javascript
JS随机洗牌算法之数组随机排序
Mar 23 Javascript
JavaScript仿网易选项卡制作代码
Oct 06 Javascript
jquery实现轮播图效果
Feb 13 Javascript
js 输入框 正则表达式(菜鸟必看教程)
Feb 19 Javascript
写jQuery插件时的注意点
Feb 20 Javascript
vue2.0 实现页面导航提示引导的方法
Mar 13 Javascript
这15个Vue指令,让你的项目开发爽到爆
Oct 11 Javascript
LayUi数据表格自定义赋值方式
Oct 26 Javascript
SpringBoot+Vue 前后端合并部署的配置方法
Dec 30 Vue.js
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并发对MYSQL造成压力的解决方法
2013/02/21 PHP
解析php取整的几种方式
2013/06/25 PHP
zend framework框架中url大小写问题解决方法
2014/08/19 PHP
php+mysql实现用户注册登陆的方法
2015/01/03 PHP
php析构函数的简单使用说明
2015/08/24 PHP
详解PHP素材图片上传、下载功能
2019/04/12 PHP
Gambit vs ForZe BO3 第一场 2.13
2021/03/10 DOTA
网站导致浏览器崩溃的原因总结(多款浏览器) 推荐
2010/04/15 Javascript
js展开闭合效果演示代码
2013/07/24 Javascript
javascript框架设计之类工厂
2015/06/23 Javascript
Node.js静态文件服务器改进版
2016/01/10 Javascript
最细致的vue.js基础语法 值得收藏!
2016/11/03 Javascript
基于vue中解决v-for使用报红并出现警告的问题
2018/03/03 Javascript
如何利用vue+vue-router+elementUI实现简易通讯录
2019/05/13 Javascript
jquery ui 实现 tab标签功能示例【测试可用】
2019/07/25 jQuery
JS实现手风琴特效
2020/11/08 Javascript
python 图片验证码代码分享
2012/07/04 Python
python控制台显示时钟的示例
2014/02/24 Python
python入门之语句(if语句、while语句、for语句)
2015/01/19 Python
Python2.x版本中maketrans()方法的使用介绍
2015/05/19 Python
Python序列操作之进阶篇
2016/12/08 Python
Python并发之多进程的方法实例代码
2018/08/15 Python
通过Turtle库在Python中绘制一个鼠年福鼠
2020/02/03 Python
Python读取yaml文件的详细教程
2020/07/21 Python
python 密码学示例——理解哈希(Hash)算法
2020/09/21 Python
JavaScript+Canvas实现自定义画板的示例代码
2019/05/13 HTML / CSS
英国领先的在线鱼贩:The Fish Society
2020/08/12 全球购物
linux面试题参考答案(6)
2016/06/23 面试题
安全责任协议书
2014/04/21 职场文书
加强作风建设心得体会
2014/10/22 职场文书
2014年终个人总结报告
2015/03/09 职场文书
Python常遇到的错误和异常
2021/11/02 Python
UNION CREATIVE《Re:从零开始的异世界生活》雷姆手办
2022/03/20 日漫
Java 多线程协作作业之信号同步
2022/05/11 Java/Android
html中相对位置与绝对位置的具体使用
2022/05/15 HTML / CSS
MyBatis在注解上使用动态SQL方式(@select使用if)
2022/07/07 Java/Android