根据项目需要,定制了个加载遮罩插件,
要求:IE7+(IE6 fixed问题没考虑),但是项目中是IE8+,使用了Font-Awesome图标而已
/*********************CSS***************/ .mask-hidden { overflow: hidden !important; } .mask-relative { position: relative; } .mask-backdrop { position: absolute; top: 0; bottom: 0; left: 0; right: 0; z-index: 1000; background-color: #ccc; opacity: 0.5; filter: alpha(opacity = 50); } .mask-icon { position: absolute; z-index: 1001; top: 0; left: 0; cursor: wait; } .mask-backdrop-fixed { position: fixed; z-index: 999999999; } .mask-icon-fixed { position: fixed; z-index: 999999999; }
; (function($) { // 需要调整大小的遮罩元素 var $MASK_ELEMENTS = []; // 窗口调整大小定时器 var MASK_RESIZE_TIMER; $(window).on("resize.mask", function() { MASK_RESIZE_TIMER && clearTimeout(MASK_RESIZE_TIMER); MASK_RESIZE_TIMER = setTimeout(function() { var $body = $(document.body); if ($body.hasClass("mask")) setIconPosition($body, $body.find("> .mask-icon")); for (var i = 0, l = $MASK_ELEMENTS.length; i < l; i++) { var $ele = $MASK_ELEMENTS[i]; var $maskEle = $ele; if (!$ele.hasClass("mask")) { $maskEle = $ele.parent(); $maskEle.css({ width : "", height : "" }); $maskEle.width($ele.outerWidth()); $maskEle.height($ele.outerHeight()); } setIconPosition($maskEle, $maskEle.find("> .mask-icon")); } }, 20); }); function elementNeedWrap($ele) { var tagName = $ele[0].tagName; if (tagName == 'TABLE') return true; return false; } function getMaskCntRect($ele) { if ($ele[0].tagName == 'BODY') { var width = window.innerWidth, height = window.innerHeight; if (typeof width != 'number') {// IE 5/6/7/8 if (document.compatMode == 'CSS1Compat') { width = document.documentElement.clientWidth; height = document.docuementElement.clientHeight; } else { width = document.body.clientWidth; height = document.body.clientHeight; } } return { width : width, height : height }; } return { height : $ele.outerHeight(), width : $ele.outerWidth() }; } function setIconPosition($maskEle, $icon) { var windowRect = getMaskCntRect($maskEle); var width = windowRect.width, height = windowRect.height; var iheight = $icon.outerHeight(), iwidth = $icon.outerWidth(); var top = (height - iheight) / 2, left = (width - iwidth) / 2; $icon.css({ top : top + "px", left : left + "px" }); } // DIV等容器性元素 function maskElement($ele, options) { if ($ele[0].tagName == 'BODY') return maskBody($ele, options); var maskCount = ($ele.data("masked") || 0) + 1; $ele.data("masked", maskCount); // 已经开启遮罩了, if (maskCount > 1) return; options.iconCls = options.iconCls || "fa fa-spinner fa-spin fa-3x"; var $maskEle = $ele; $MASK_ELEMENTS.push($ele); if (elementNeedWrap($ele)) { $maskEle = $ele.wrap('<div></div>').parent(); $maskEle.width($ele.outerWidth()); $maskEle.height($ele.outerHeight()); } $maskEle.addClass("mask mask-hidden"); $maskEle.css("position") == 'static' && $maskEle.addClass("mask-relative"); var $mask = $('<div class="mask-backdrop"></div>').appendTo($maskEle); var $icon = $('<i class="mask-icon ' + options.iconCls + '"></i>') .appendTo($maskEle); setIconPosition($maskEle, $icon); } function unMaskElement($ele) { if ($ele[0].tagName == 'BODY') return unMaskBody($ele); var maskCount = ($ele.data("masked") || 0) - 1; // 从来没遮罩过 if (maskCount > 0) return $ele.data("masked",maskCount); $ele.removeData("masked"); var $maskEle = $ele.hasClass("mask") ? $ele : $ele.parent(); $maskEle.removeClass("mask mask-relative mask-hidden"); $maskEle.find("> .mask-backdrop").remove(); $maskEle.find("> .mask-icon").remove(); // 窗口缩放监听从数组中移除出去 for (var i = 0, l = $MASK_ELEMENTS.length; i < l; i++) if ($MASK_ELEMENTS[i].get(0) == $maskEle[0]) $MASK_ELEMENTS.splice(i, 1); } function maskBody($ele, options) { if ($ele[0].tagName != 'BODY') return maskElement($ele, options); var maskCount = ($ele.data("masked") || 0) + 1; $ele.data("masked", maskCount); // 已经开启遮罩了, if (maskCount > 1) return; options.iconCls = options.iconCls || "fa fa-spinner fa-spin fa-5x"; var $maskEle = $ele.addClass("mask"); var $mask = $('<div class="mask-backdrop mask-backdrop-fixed"></div>') .appendTo($maskEle); var $icon = $( '<i class="mask-icon mask-icon-fixed ' + options.iconCls + '"></i>').appendTo($maskEle); setIconPosition($maskEle, $icon); } function unMaskBody($ele) { if ($ele[0].tagName != 'BODY') return unMaskElement($ele); var maskCount = ($ele.data("masked") || 0) - 1; // 从来没遮罩过 if (maskCount > 0) return $ele.data("masked",maskCount); var $maskEle = $ele.removeData("masked"); $maskEle.removeClass("mask"); $maskEle.find("> .mask-backdrop").remove(); $maskEle.find("> .mask-icon").remove(); } /** * Displays loading mask over selected element(s). Accepts both single and * multiple selectors. * * @param label * Text message that will be displayed on top of the mask besides * a spinner (optional). If not provided only mask will be * displayed without a label or a spinner. * @param delay * Delay in milliseconds before element is masked (optional). If * unmask() is called before the delay times out, no mask is * displayed. This can be used to prevent unnecessary mask * display for quick processes. */ $.fn.mask = function(options) { options = options || {}; $(this).each(function() { maskElement($(this), options); }); }; $.fn.unmask = function() { $(this).each(function() { unMaskElement($(this)); }); }; $.fn.isMasked = function() { return (this.data("masked") || 0) > 1; }; })(jQuery);
相关推荐
自定义控件,实现在winform窗口中点击查询等待时的页面加载遮罩效果,背景半透明,结果返回前被遮罩的控件不可用。 有问题可留言http://blog.csdn.net/quan278905570
鼠标悬停后,逐渐加载一个图片阴影遮罩效果,主要采用jQuery的 fadeIn fadeOut 参数实现 默认遮罩层隐藏,鼠标移动到当前图片上后显示 鼠标移走后遮罩层消失 使用方法: 1、将index.html中的css...
NULL 博文链接:https://2814704901.iteye.com/blog/1955402
在winform中实现的遮罩层效果
自己写的纯js和css动态实现遮罩层加载效果,挺好用的,IE8、FF、Chrome都测试过,还行。大家下载了,可以通过改CSS改变样式。喜欢和大家分享学习中的点点滴滴。
Cesium地图反选遮罩,支持自定义遮罩颜色
原生js简单瀑布流图片无限加载带鼠标悬停图片遮罩效果
js简单瀑布流图片无限加载带鼠标悬停图片遮罩效果
.net C# winform 数据加载Loading效果 源代码, 数据加载的时候会现在Loading遮罩效果, 数据加载完成后消失。
手机网页遮罩动态加载效果是一款基于jquery html5实现的手机网页遮罩动态加载显示效果。
bootstrap 前端 div方式 实现遮罩效果 数据加载过程中禁止用户操作
用遮罩层显示页面加载信息,纯JS的,代码简单,功能完善.调用showMask()函数即可看到效果.
全屏loading图有遮罩效果 当显示全屏loading图时无法操作页面上的按钮
WaitScreen简介WaitScreen是对PopupWindow的封装,实现了打开页面加载数据时的遮罩弹屏效果运行效果图PS.在实际开发中,有很多页面会请求数据,因为数据不是时时的,所以需要在数据加载成功之前弹出一个遮罩,以改善...
JQuery九宫格遮罩显示文字效果是一款九宫格布局的图片鼠标经过遮罩显示文字效果代码。
代码完整打包下载,jquery遮罩效果图片动画式滚动效果,通过上图可以看出一些效果,有点像一些门户网站的图片翻页效果,由于图片比较大,加载的时候可能慢一些,实际运用的时候用小点的图片,效果还是不错的。
在使用的过程中,发现easyui目前还缺少一些小功能或是未开放出来 拿datagrid插件来说,数据加载提供了两种方式远程和本地数据加载,但只有远程数据加载时才会显示数据加载的遮罩层,在数据加载完成后隐藏遮罩层;...
效果良好,加载中可选择让页面不可选中,显示隐藏功能,效果很漂亮。