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 6if ($.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 IEif ($.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简介
概述: jQuery BlockUI插件可以在不锁定浏览器的同时,模拟同步模式下发起Ajax请求的行为.该插件激活时,会阻止用户在页面进行的操作,直到插件被关闭.BlockUI通过向DOM中添加元素实 ...
- jQuery BlockUI 插件(遮罩层)
部分效果 概述 当使用AJAX时,jQuery BlockUI插件可以模拟同步行为,并且不会锁定浏览器.一旦被激活,它便会防止页面上(或页面的一部分)用户的操作,直到被停用.BlockUI给DOM带来 ...
- 超强的jquery极品插件--色彩选择器类/ 右键菜单类/ 图片新闻flash展示类
Farbtastic Farbtastic是一个color picker插件.它能够在一个页面中加入多个颜色选择控件,然后每个控件关联到页面中的一个元素比如:文本输入框. Farbtastic jQu ...
- 超强1000个jquery极品插件!(连载中。。。。最近更新20090710)
花N长时间积累的Jquery插件,希望大家喜欢.大家还有什么新的插件,请留言,我们一并收录. 感谢大家的支持. ++++++++++++++++++++++++++++++++++++++++++++ ...
- layer之jquery 弹窗插件 (最后版本v1.8.5)
转载自 jquery 弹窗插件 layer jquery.layer版本(v1.8.5)下载地址 注意:v1.8.5后改版移除各种API,构造方法改版 <!DOCTYPE html PUBLIC ...
- 超强1000个jquery极品插件!(感觉好强大,转载一下)
花N长时间积累的Jquery插件,希望大家喜欢.大家还有什么新的插件,请留言,我们一并收录. 感谢大家的支持. ++++++++++++++++++++++++++++++++++++++++++++ ...
- 超强1000个jquery极品插件!
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ accordion类 +++++++++++++ ...
- 开发人员应该知道的15个吸引力的jquery lightbox插件推荐
jQuery 是非常流行的JS框架,其俨然已成了开发者的必备工具,其中的jQuery Lightbox插件更是为广大开发者所喜爱.它惊人的特征之一是jQuery Lightbox插件有很多变化.你可以 ...
- 超强1000个jquery极品插件!(连载中。。。。最近更新20100127)
1.导航类 (1) Horizontal accordion: jQuery 基于jQuery开发,非常简单的水平方向折叠控件. 二手图书 二手书 特价书 旧书网 (2)jQuery-Horizont ...
最新文章
- python 英文字符频率统计 采用降序方式输出_Python读取英文文件并记录每个单词出现次数后降序输出示例...
- Tomcat - 都说Tomcat违背了双亲委派机制,到底对不对?
- Overload 和Override 的区别
- OpenCV提炼角点位置的实例(附完整代码)
- [湖南师大集训2018 7 26] hunger 解题报告 (SPFA)
- 支撑全网70%世界杯流量 盘点世界杯直播背后的阿里云黑科技
- linux vi编辑撤销,vi撤销命令(u和U),撤销上一次的操作
- Linux设备驱动之字符设备(二)
- 惠普1020打印机查看已打印页数
- 程序员职场-三人行,必有我师
- 苹果电子邮件怎么注册_无需购买 iPhone,可以使用哪些苹果的优质服务?
- Java程序基础——异常
- 一篇今日头条百万阅读量爆文怎么来的,自媒体月收入暴涨10万+
- HDMI_CS4344调试说明
- Excel阅读器NPOI
- 紫书 习题 11-12 UVa 1665 (并查集维护联通分量)
- 如何比较好的规避拼多多纠纷退款的技巧?天创速盈来说
- python面试常问
- 帝国cms e loop php,帝国CMS灵动标签e:loop的一些用法
- 【3月比赛合集】45场可报名的数据挖掘奖金赛,任君挑选!