jQuery遮罩层插件
在网页上常常遇到须要等待非常久的操作,比方导出报表等。为了预防用户点击其它操作或者多次点击同个功能,须要用遮罩层把页面或者操作区盖住。防止用户进行下一步操作。同一时候能够提高界面友好度,让用户知道操作正在运行。
- $.fn.extend({
- /**
- * 给元素加入遮罩层
- * @param message {String} [可选]遮罩层显示内容
- */
- mask: function (message) {
- var $target = this,
- fixed = false,
- targetStatic = true;
- if (Object.prototype.toString.call(message) !== '[object String]' || !message) {
- //假设message为空或者不是字符串,则用默认的消息提示。
- message = '请稍候。
- 。。';
- }
- if ($target.length === 0) {
- $target = $('body');
- } else {
- if ($target.length > 1) {
- $target = $target.first();
- }
- if ($target[0] === window || $target[0] === document) {
- $target = $('body');
- }
- }
- if($target[0] === document.body){
- fixed = true;
- }
- //假设目标元素已经有遮罩层,获取遮罩层
- var old = $target.data('rhui.mask');
- if (old) {
- old.$content.html(message);
- center($target, old.$content, fixed);
- return;
- }
- //假设被遮盖的元素是static。把元素改成relative
- if ($target.css('position') === 'static') {
- targetStatic = true;
- $target.css('position', 'relative');
- }
- var $content, $overlay;
- if (fixed) {
- $overlay = $('<div class="rhui-mask" style="position:fixed;"></div>');
- $content = $('<div class="rhui-mask-content" style="position:fixed;">' + message + '</div>');
- } else {
- $overlay = $('<div class="rhui-mask"></div>');
- $content = $('<div class="rhui-mask-content">' + message + '</div>');
- }
- $overlay.appendTo($target);
- $content.appendTo($target);
- //显示遮罩层
- $overlay.show();
- $content.show();
- //让遮罩层居中
- center($target, $content, fixed);
- //把遮罩层信息加入到$target
- $target.data('rhui.mask', {
- fixed: fixed,
- $overlay: $overlay,
- $content: $content,
- targetStatic: targetStatic
- });
- /**
- * 让遮罩层内容居中显示
- * @param $target 被遮盖的元素
- * @param $content 遮罩层内容元素
- * @param fixed 遮罩层是否固定显示
- */
- function center($target, $content, fixed) {
- var $window,
- height = $content.outerHeight(true),
- width = $content.outerWidth(true);
- if (fixed) {
- //假设遮罩层固定显示。让遮罩层在window居中
- $window = $(window);
- $content.css({
- left: ($window.width() - width) / 2,
- top: ($window.height() - height) / 2
- });
- } else {
- //让遮罩层在$target中居中
- $content.css({
- left: ($target.width() - width) / 2,
- top: ($target.height() - height) / 2
- });
- }
- }
- },
- /**
- * 取消遮罩层
- */
- unmask: function () {
- var $target;
- if (this.length === 0) {
- $target = $('body');
- } else {
- $target = this.first();
- if ($target[0] === window || $target[0] === document) {
- $target = $('body');
- }
- }
- var data = $target.data('rhui.mask');
- if (!data) {
- return;
- }
- //还原目标元素的position属性
- if (data.targetStatic) {
- $target.css('position', 'static');
- }
- data.$overlay.remove();
- data.$content.remove();
- $target.removeData('rhui.mask');
- }
- });
插件样式由rhui-mask和rhui-mask-content类控制,rhui-mask是遮罩层样式,rhui-mask-content是遮罩层的提示内容样式。
- /* 遮罩层样式 */
- .rhui-mask {
- position: absolute;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- z-index: 9000;
- display: block;
- margin: 0;
- padding: 0;
- border-style: none;
- background-color: #777;
- opacity: 0.3;
- zoom: 1;
- filter: alpha(opacity=30);
- }
- /* 遮罩层显示内容样式 */
- .rhui-mask-content {
- position: absolute;
- z-index: 9999;
- display: block;
- margin: 0;
- padding: 15px 20px;
- border: 2px solid rgb(109, 157, 215);
- background-color: #fff;
- color: blue;
- letter-spacing: 2px;
- font-weight: bold;
- font-size: 15px;
- cursor: wait;
- }
效果如图所看到的
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
页面调用完整代码
- <!DOCTYPE html>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <title>网页遮罩层的实现</title>
- <style type="text/css">
- /* 遮罩层样式 */
- .rhui-mask {
- position: absolute;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- z-index: 9000;
- display: block;
- margin: 0;
- padding: 0;
- border-style: none;
- background-color: #777;
- opacity: 0.3;
- zoom: 1;
- filter: alpha(opacity=30);
- }
- /* 遮罩层显示内容样式 */
- .rhui-mask-content {
- position: absolute;
- z-index: 9999;
- display: block;
- margin: 0;
- padding: 15px 20px;
- border: 2px solid rgb(109, 157, 215);
- background-color: #fff;
- color: blue;
- letter-spacing: 2px;
- font-weight: bold;
- font-size: 15px;
- cursor: wait;
- }
- </style>
- <script type="text/javascript" src="http://cdn.bootcss.com/jquery/1.11.3/jquery.js"></script>
- <script type="text/javascript">
- $.fn.extend({
- /**
- * 给元素加入遮罩层
- * @param message {String} [可选]遮罩层显示内容
- */
- mask: function (message) {
- var $target = this,
- fixed = false,
- targetStatic = true;
- if (Object.prototype.toString.call(message) !== '[object String]' || !message) {
- //假设message为空或者不是字符串,则用默认的消息提示。
- message = '请稍候。
- 。。';
- }
- if ($target.length === 0) {
- $target = $('body');
- } else {
- if ($target.length > 1) {
- $target = $target.first();
- }
- if ($target[0] === window || $target[0] === document) {
- $target = $('body');
- }
- }
- if ($target[0] === document.body) {
- fixed = true;
- }
- //假设目标元素已经有遮罩层,获取遮罩层
- var old = $target.data('rhui.mask');
- if (old) {
- old.$content.html(message);
- center($target, old.$content, fixed);
- return;
- }
- //假设被遮盖的元素是static,把元素改成relative
- if ($target.css('position') === 'static') {
- targetStatic = true;
- $target.css('position', 'relative');
- }
- var $content, $overlay;
- if (fixed) {
- $overlay = $('<div class="rhui-mask" style="position:fixed;"></div>');
- $content = $('<div class="rhui-mask-content" style="position:fixed;">' + message + '</div>');
- } else {
- $overlay = $('<div class="rhui-mask"></div>');
- $content = $('<div class="rhui-mask-content">' + message + '</div>');
- }
- $overlay.appendTo($target);
- $content.appendTo($target);
- //显示遮罩层
- $overlay.show();
- $content.show();
- //让遮罩层居中
- center($target, $content, fixed);
- //把遮罩层信息加入到$target
- $target.data('rhui.mask', {
- fixed: fixed,
- $overlay: $overlay,
- $content: $content,
- targetStatic: targetStatic
- });
- /**
- * 让遮罩层内容居中显示
- * @param $target 被遮盖的元素
- * @param $content 遮罩层内容元素
- * @param fixed 遮罩层是否固定显示
- */
- function center($target, $content, fixed) {
- var $window,
- height = $content.outerHeight(true),
- width = $content.outerWidth(true);
- if (fixed) {
- //假设遮罩层固定显示,让遮罩层在window居中
- $window = $(window);
- $content.css({
- left: ($window.width() - width) / 2,
- top: ($window.height() - height) / 2
- });
- } else {
- //让遮罩层在$target中居中
- $content.css({
- left: ($target.width() - width) / 2,
- top: ($target.height() - height) / 2
- });
- }
- }
- },
- /**
- * 取消遮罩层
- */
- unmask: function () {
- var $target;
- if (this.length === 0) {
- $target = $('body');
- } else {
- $target = this.first();
- if ($target[0] === window || $target[0] === document) {
- $target = $('body');
- }
- }
- var data = $target.data('rhui.mask');
- if (!data) {
- return;
- }
- //还原目标元素的position属性
- if (data.targetStatic) {
- $target.css('position', 'static');
- }
- data.$overlay.remove();
- data.$content.remove();
- $target.removeData('rhui.mask');
- }
- });
- </script>
- </head>
- <body>
- <div id="div" style="width:600px;height:300px;margin:10px;border:1px solid red;"></div>
- <script type="text/javascript">
- $(function () {
- //遮盖整个页面
- //仅仅要对window、document和body使用遮罩层。都会遮盖整个页面
- //$(window).mask();
- //$(window).unmask(); 取消遮罩
- //遮盖div
- $('#div').mask('载入中,请稍候。。
- 。');
- });
- </script>
- </body>
- </html>
jQuery遮罩层插件的更多相关文章
- jQuery遮罩层登录对话框
用户登录是许多网站必备的功能.有一种方式就是不管在网站的哪个页面,点击登录按钮就会弹出一个遮罩层,显示用户登录的对话框.这用方式比较灵活方便.而现在扫描二维码登录的方式也是很常见,例如QQ.微信.百度 ...
- jQuery遮罩层的实现
遮罩层其实就是一个占据整个页面的半透明效果的页面元素,一般用div实现.页面中实现遮罩层,无非就是为了让用户只能操作弹出窗口的内容,而不允许操作弹出窗口外的内容. 在实现时,我使用了两个div,一个遮 ...
- jquery 遮罩层显示img
如果点击iframe中的image显示整个页面的遮罩层,可参考如下: http://blog.csdn.net/shiaijuan1/article/details/70160714 具体思路就是,顶 ...
- jquery遮罩层
(function () { //遮罩层实现 zhe zhao ceng kexb 2016.2.24 $.extend($.fn, { mask: function (msg, maskDivCla ...
- jQuery遮罩层效果
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- JQuery 遮罩层弹窗
var str = "<div id=\"zhezhao\" style=\"display:none; background-color: rgba(0 ...
- jquery 遮罩层指定位置
.css .datagrid-mask-msg { position: absolute; top: %; margin-top: -20px; padding: 12px 5px 10px 30px ...
- Jquery实现遮罩层,就是弹出DIV周围都灰色不能操作
<%@ page language="java" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC & ...
- jquery实现div遮罩层
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
随机推荐
- 【译】Asp.Net Identity Cookies 格式化
原文出处 Trailmax Tech Max Vasilyev: ASP.Net MVC development in Aberdeen, Scotland 中英对照版 我的读者联系到我,并向我提出了 ...
- Mybatis主配置文件常见使用讲解
在开发中我们通常将Mybatis中配置文件分两种,主配置文件与和dao对应的映射文件. 其实最后mybatis解析的还是一个主配置文件. 而映射文件会通过我们配置<mappers>属性,或 ...
- http下载网页
//http.c #include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/ ...
- linux操作系统基础篇(七)
Linux服务篇(二) 1.nfs服务的搭建 安装: yum install rpcbind nfs-utils -y 配置: NFS服务的配置文件为 /etc/exports,这个文件是NFS的主要 ...
- git学习之创建版本库
创建版本库 什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能跟踪,以便任何时刻都可以 ...
- shiro入门示例
一.pom引入maven依赖 <dependencies> <dependency> <groupId>junit</groupId> <arti ...
- 《java.util.concurrent 包源码阅读》04 ConcurrentMap
Java集合框架中的Map类型的数据结构是非线程安全,在多线程环境中使用时需要手动进行线程同步.因此在java.util.concurrent包中提供了一个线程安全版本的Map类型数据结构:Concu ...
- PHP启动:动态库加载失败(PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012/*.so')
今天在linux上面智障一般搞了好久,本来想安装个swoole的,然后用 php -m 的命令想看下安装的PHP扩展库,发现有的扩展库有的可以出来,有的加载失败, 加载失败的错误类型: PHP Wa ...
- e2e测试之Nightmare
一.e2e测试简介 e2e或者端到端(end-to-end)或者UI测试是一种测试方法,它用来测试一个应用从头到尾的流程是否和设计时候所想的一样.简而言之,它从一个用户的角度出发,认为整个系统都是一个 ...
- python并发编程之多进程一
一,什么是进程 进程是操作系统结构的基础:是一个正在执行的程序:计算机中正在运行的程序实例:可以分配给处理器并由处理器执行的一个实体: 二,进程与程序的区别 进程即运行中的程序,从中即可知,进程是在运 ...