Jquery遮罩插件,想罩哪就罩哪!
一 前言
在项目开发时发现没有一个用起来 爽一点的遮罩插件,看起来觉得不难 好吧那就利用空闲时间,自己折腾一个吧,也好把jquery再温习一下,
需要的功能如下
1 可以全屏遮 用于提交数据时
2 局部遮,用于重复提交,只遮提交按钮,此功能当时在CSDN的登录中看到过,当时觉得还不错
3 遮罩上的提示文字可自己配置,因为操作的业务场景不一样,提示的信息肯定也会不一样
4 遮罩图片可配置,
5 信息提示层大小可配置
大致功能就如上几点,然后就是折腾js了,蹭蹭蹭~~~~ 然后就出来了~ 先上效果
全局遮罩效果

局部遮罩

二 源码相关
需要了解的知识点大致如下
1 z-index属性
2 position属性
3 浏览器窗口与document 高宽的计算
4 jquery 插件格式
5 css 滤镜效果
不多说了上代码!为了减少引入的文件索性将css直接写在js中了
/**************************
*Desc:提交操作时遮罩
*Argument:type=0 全屏遮 1局部遮
*Author:Zery-Zhang
*Date:2014-09-18
*Version:1.0.0
**************************/
; (function ($) {
$.fn.jqLoading =function(option) {
var defaultVal = {
backgroudColor: "#ECECEC",//背景色
backgroundImage: "../image/loading.gif",//背景图片
text: "玩命加载中....",//文字
width: 150,//宽度
height: 60,//高度
type:0 //0全部遮,1 局部遮 };
var opt = $.extend({}, defaultVal, option); if (opt.type == 0) {
//全屏遮
openLayer();
} else {
//局部遮(当前对象应为需要被遮挡的对象)
openPartialLayer(this);
} //销毁对象
if (option === "destroy") {
closeLayer();
} //设置背景层高
function height () {
var scrollHeight, offsetHeight;
// handle IE 6
if ($.browser.msie && $.browser.version < 7) {
scrollHeight = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight);
offsetHeight = Math.max(document.documentElement.offsetHeight, document.body.offsetHeight);
if (scrollHeight < offsetHeight) {
return $(window).height();
} else {
return scrollHeight;
}
// handle "good" browsers
}
else if ($.browser.msie && $.browser.version == 8) {
return $(document).height() - 4;
}
else {
return $(document).height();
}
}; //设置背景层宽
function width() {
var scrollWidth, offsetWidth;
// handle IE
if ($.browser.msie) {
scrollWidth = Math.max(document.documentElement.scrollWidth, document.body.scrollWidth);
offsetWidth = Math.max(document.documentElement.offsetWidth, document.body.offsetWidth);
if (scrollWidth < offsetWidth) {
return $(window).width();
} else {
return scrollWidth;
}
// handle "good" browsers
}
else {
return $(document).width();
}
}; /*==========全部遮罩=========*/
function openLayer() {
//背景遮罩层
var layer = $("<div id='layer'></div>");
layer.css({
zIndex:9998,
position: "absolute",
height: height() + "px",
width: width() + "px",
background: "black",
top: 0,
left: 0,
filter: "alpha(opacity=30)",
opacity: 0.3 }); //图片及文字层
var content = $("<div id='content'></div>");
content.css({
textAlign: "left",
position:"absolute",
zIndex: 9999,
height: opt.height + "px",
width: opt.width + "px",
top: "50%",
left: "50%",
verticalAlign: "middle",
background: opt.backgroudColor,
borderRadius:"8px",
fontSize:"13px"
}); content.append("<img style='vertical-align:middle;margin:"+(opt.height/4)+"px; 0 0 5px;margin-right:5px;' src='" + opt.backgroundImage + "' /><span style='text-align:center; vertical-align:middle;'>" + opt.text + "</span>");
$("body").append(layer).append(content);
var top = content.css("top").replace('px','');
var left = content.css("left").replace('px','');
content.css("top",(parseFloat(top)-opt.height/2)).css("left",(parseFloat(left)-opt.width/2)); return this;
} //销毁对象
function closeLayer() {
$("#layer,#content,#partialLayer").remove();
return this;
} /*==========局部遮罩=========*/
function openPartialLayer(obj) { var eheight = $(obj).css("height");//元素带px的高宽度
var ewidth = $(obj).css("width");
var top = $(obj).offset().top; // 元素在文档中位置 滚动条不影响
var left = $(obj).offset().left; var layer = $("<div id='partialLayer'></div>");
layer.css({
style: 'z-index:9998',
position: "absolute",
height: eheight,
width: ewidth,
background: "black",
top: top,
left: left,
filter: "alpha(opacity=60)",
opacity: 0.6,
borderRadius:"3px",
dispaly: "block"
});
$("body").append(layer); return this;
}
}; })(jQuery)
插件用法如下
<input type="button" id="btnOpen" value="打开" />
<input type="button" id="btnClose" value="关闭" /> <script type="text/javascript">
$(function () {
$("#btnOpen").on("click", function () {
//全局
//$(this).jqLoading(); //局部
$(this).jqLoading({ type: 1 }); }); $("#btnClose").on("click", function () {
$(this).jqLoading("destroy"); });
}) </script>
三 总结
以上代码只为自己练习所用,如果碰巧能被人所用,那纯属巧合~
我个人很享受,由构思到成品 这一过程,并一直努力将自己的一些想法,用代码慢慢实现。
下载地址:http://files.cnblogs.com/zery/jqLoding.rar
预告: 表动态增加 插件
下一篇将介绍自己在实际项目中用到的表格动态增加,删除,取数据,绑定数据 ,数据校验等 先上个图

如果您觉得本文有给您带来一点收获,不妨点个推荐,为我的付出支持一下,谢谢~
如果希望在技术的道路上能有更多的朋友,那就关注下我吧,让我们一起在技术的路上奔跑
Jquery遮罩插件,想罩哪就罩哪!的更多相关文章
- jQuery遮罩插件 jquery.blockUI.js
Overview jQuery BlockUI 插件可以在不同锁定浏览器的同时,模拟同步模式下发起Ajax请求的行为.该插件激活时,会组织用户在页面进行的操作,直到插件被关闭.BlockUI通过向DO ...
- jQuery遮罩插件jQuery.blockUI.js简介
利用Jquery.blockui.js创建可拖动.自定义内容的弹出层 利用Jquery.blockui.js创建可拖动.自定义内容的弹出层 目标 : 1 . 弹出层的内容可以自定义任意的HTML元素 ...
- 黑色半透明镂空遮罩指引效果实现jQuery小插件
/*! * by zhangxinxu(.com) 2017-05-18 * 新版上线时候的黑色半透明镂空遮罩指引效果实现jQuery小插件 * 兼容到IE8+ * MIT使用协议,使用时候保留版权 ...
- Juqery遮罩插件
Juqery遮罩插件,想罩哪就罩哪! 一 前言 在项目开发时发现没有一个用起来 爽一点的遮罩插件,看起来觉得不难 好吧那就利用空闲时间,自己折腾一个吧,也好把jquery再温习一下, 需要的功能 ...
- jquery 弹窗插件 layer
jquery 弹窗插件 layer 官网:http://sentsin.com/jquery/layer/ 1 <!DOCTYPE html PUBLIC "-//W3C//DTD H ...
- 深入学习jQuery自定义插件
原文地址:jQuery自定义插件学习 1.定义插件的方法 对象级别的插件扩展,即为jQuery类的实例增加方法, 调用:$(选择器).函数名(参数); $(‘#id’).myPlugin(o ...
- jquery简单插件写法
(function($){ /** * 遮罩插件 * 使用:$('#id').qloading(options); * 详见:/plugins/_11_qloading/qloading.html * ...
- 使用jQuery.form插件,实现完美的表单异步提交
传送门:异步编程系列目录…… 时间真快,转眼一个月快结束了,一个月没写博客了!手开始生了,怎么开始呢…… 示例下载:使用jQuery.form插件,实现完美的表单异步提交.rar 月份的尾巴,今天的主 ...
- jQuery倒计时插件
倒计时jQuery插件 引言 最近又换工作了,还不错,我换工作的次数其实有点频繁,2014年7月份毕业,到现在工作已经换了3份了,工资跟刚毕业时候相比也涨了点儿,最近一次换工作我离开了深圳,来到了北京 ...
随机推荐
- MFC--响应鼠标和键盘操作
一个程序最重要的部分之一是对鼠标和键盘操作的响应. 一. 理解鼠标事件.之前对鼠标事件的认识仅仅局限于处理控件的单击与双击事件.但实际鼠标的操作包含很多.这里将以一个画图的小程序讲解对鼠标的响应. ...
- Spring(5)—— 注解
注解Annotation,是一种类似注释的机制,在代码中添加注解可以在之后某时间使用这些信息.跟注释不同的是,注释是给我们看到,java虚拟机不会编译,注解也是不编译的,但是我们可以通过反射机制来读取 ...
- 1-7 basket.js localstorage.js缓存css、js
basket.js 源码分析 api 使用文档: http://t3n.de/news/basketjs-performance-localstorage-515119/ 一.前言 b ...
- Atitit.报名模块的管理
Atitit.报名模块的管理 1.1. 统计报名数据1 1.2. 存储1 1.3. 报名1 1.4. 查看报名数据3 1.1. 统计报名数据 select count(*) as nums from ...
- 用Kotlin开发Android应用(II):创建新项目
这是关于Kotlin的第二篇.各位高手发现问题,请继续“拍砖”. 原文标题:Kotlin for Android(II): Create a new project 原文链接:http://anton ...
- eclipse整体设置
2.Eclipse for android 设置代码提示功能(1)设置 java 文件的代码提示功能打开 Eclipse 依次选择 Window > Preferences > Java ...
- OC 面试问题汇总
OC 问题汇总: 1. 你如何理解 iOS 内存管理 1. new alloc copy retain这些对象我们都要主动的release或者 autorelease 2. 如果是类方法创建的 ...
- [Erlang 0103] Erlang Resources 资讯小站
好久没有写博客,是懒了吗?不是;前面两个月在紧张地推进一个项目,中间积累了一些RabbitMQ和Erlang的东西;本打算在项目结束之后赶紧总结一下,结果老婆怀孕之后生活节奏大乱:早起做饭,晚上 ...
- 设计模式C#实现(十四)——责任链模式
意图 0 适用性 1 结构 2 实现 3 效果 4 参考 5 意图 使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象 ...
- android edittext属性说明
将EditText内容转换为字符串: EditText.getText().toString() <EditText android:id="@+id/edt_month" ...