jquery的blockUI遮罩层的使用
创始人
2024-11-10 02:10:18
0
  • Thanks to Amir-Hossein Sobhi for some excellent contributions!

*/

;(function() {

/*jshint eqeqeq:false curly:false latedef:false */

“use strict”;

function setup($) {

$.fn._fadeIn = $.fn.fadeIn;

var noOp = $.noop || function() {};

// this bit is to ensure we don’t call setExpression when we shouldn’t (with extra muscle to handle

// confusing userAgent strings on Vista)

var msie = /MSIE/.test(navigator.userAgent);

var ie6 = /MSIE 6.0/.test(navigator.userAgent) && ! /MSIE 8.0/.test(navigator.userAgent);

var mode = document.documentMode || 0;

var setExpr = $.isFunction( document.createElement(‘div’).style.setExpression );

// global $ methods for blocking/unblocking the entire page

$.blockUI = function(opts) { install(window, opts); };

$.unblockUI = function(opts) { remove(window, opts); };

// convenience method for quick growl-like notifications (http://www.google.com/search?q=growl)

$.growlUI = function(title, message, timeout, onClose) {

var $m = $(‘

’);

if (title) $m.append(‘

’+title+‘

’);

if (message) $m.append(‘

’+message+‘

’);

if (timeout === undefined) timeout = 3000;

// Added by konapun: Set timeout to 30 seconds if this growl is moused over, like normal toast notifications

var callBlock = function(opts) {

opts = opts || {};

$.blockUI({

message: $m,

fadeIn : typeof opts.fadeIn !== ‘undefined’ ? opts.fadeIn : 700,

fadeOut: typeof opts.fadeOut !== ‘undefined’ ? opts.fadeOut : 1000,

timeout: typeof opts.timeout !== ‘undefined’ ? opts.timeout : timeout,

centerY: false,

showOverlay: false,

onUnblock: onClose,

css: $.blockUI.defaults.growlCSS

});

};

callBlock();

var nonmousedOpacity = $m.css(‘opacity’);

$m.mouseover(function() {

callBlock({

fadeIn: 0,

timeout: 30000

});

var displayBlock = $(‘.blockMsg’);

displayBlock.stop(); // cancel fadeout if it has started

displayBlock.fadeTo(300, 1); // make it easier to read the message by removing transparency

}).mouseout(function() {

$(‘.blockMsg’).fadeOut(1000);

});

// End konapun additions

};

// plugin method for blocking element content

$.fn.block = function(opts) {

if ( this[0] === window ) {

$.blockUI( opts );

return this;

}

var fullOpts = $.extend({}, $.blockUI.defaults, opts || {});

this.each(function() {

var $el = $(this);

if (fullOpts.ignoreIfBlocked && $el.data(‘blockUI.isBlocked’))

return;

$el.unblock({ fadeOut: 0 });

});

return this.each(function() {

if ($.css(this,‘position’) == ‘static’) {

this.style.position = ‘relative’;

$(this).data(‘blockUI.static’, true);

}

this.style.zoom = 1; // force ‘hasLayout’ in ie

install(this, opts);

});

};

// plugin method for unblocking element content

$.fn.unblock = function(opts) {

if ( this[0] === window ) {

$.unblockUI( opts );

return this;

}

return this.each(function() {

remove(this, opts);

});

};

$.blockUI.version = 2.70; // 2nd generation blocking at no extra cost!

// override these in your code to change the default behavior and style

$.blockUI.defaults = {

// message displayed when blocking (use null for no message)

message: ‘

Please wait…

’,

title: null, // title string; only used when theme == true

draggable: true, // only used when theme == true (requires jquery-ui.js to be loaded)

theme: false, // set to true to use with jQuery UI themes

// styles for the message when blocking; if you wish to disable

// these and use an external stylesheet then do this in your code:

// $.blockUI.defaults.css = {};

css: {

padding: 0,

margin: 0,

width: ‘30%’,

top: ‘40%’,

left: ‘35%’,

textAlign: ‘center’,

color: ‘#000’,

border: ‘3px solid #aaa’,

backgroundColor:‘#fff’,

cursor: ‘wait’

},

// minimal style set used when themes are used

themedCSS: {

width: ‘30%’,

top: ‘40%’,

left: ‘35%’

},

// styles for the overlay

overlayCSS: {

backgroundColor: ‘#000’,

opacity: 0.6,

cursor: ‘wait’

},

// style to replace wait cursor before unblocking to correct issue

// of lingering wait cursor

cursorReset: ‘default’,

// styles applied when using $.growlUI

growlCSS: {

width: ‘350px’,

top: ‘10px’,

left: ‘’,

right: ‘10px’,

border: ‘none’,

padding: ‘5px’,

opacity: 0.6,

cursor: ‘default’,

color: ‘#fff’,

backgroundColor: ‘#000’,

‘-webkit-border-radius’:‘10px’,

‘-moz-border-radius’: ‘10px’,

‘border-radius’: ‘10px’

},

// IE issues: ‘about:blank’ fails on HTTPS and javascript:false is s-l-o-w

// (hat tip to Jorge H. N. de Vasconcelos)

/*jshint scripturl:true */

iframeSrc: /^https/i.test(window.location.href || ‘’) ? ‘javascript:false’ : ‘about:blank’,

// force usage of iframe in non-IE browsers (handy for blocking applets)

forceIframe: false,

// z-index for the blocking overlay

baseZ: 1000,

// set these to true to have the message automatically centered

centerX: true, // <-- only effects element blocking (page block controlled via css above)

centerY: true,

// allow body element to be stetched in ie6; this makes blocking look better

// on “short” pages. disable if you wish to prevent changes to the body height

allowBodyStretch: true,

// enable if you want key and mouse events to be disabled for content that is blocked

bindEvents: true,

// be default blockUI will supress tab navigation from leaving blocking content

// (if bindEvents is true)

constrainTabKey: true,

// fadeIn time in millis; set to 0 to disable fadeIn on block

fadeIn: 200,

// fadeOut time in millis; set to 0 to disable fadeOut on unblock

fadeOut: 400,

// time in millis to wait before auto-unblocking; set to 0 to disable auto-unblock

timeout: 0,

// disable if you don’t want to show the overlay

showOverlay: true,

// if true, focus will be placed in the first available input field when

// page blocking

focusInput: true,

// elements that can receive focus

focusableElements: ‘:input:enabled:visible’,

// suppresses the use of overlay styles on FF/Linux (due to performance issues with opacity)

// no longer needed in 2012

// applyPlatformOpacityRules: true,

// callback method invoked when fadeIn has completed and blocking message is visible

onBlock: null,

// callback method invoked when unblocking has completed; the callback is

// passed the element that has been unblocked (which is the window object for page

// blocks) and the options that were passed to the unblock call:

// onUnblock(element, options)

onUnblock: null,

// callback method invoked when the overlay area is clicked.

// setting this will turn the cursor to a pointer, otherwise cursor defined in overlayCss will be used.

onOverlayClick: null,

// don’t ask; if you really must know: http://groups.google.com/group/jquery-en/browse_thread/thread/36640a8730503595/2f6a79a77a78e493#2f6a79a77a78e493

quirksmodeOffsetHack: 4,

// class name of the message block

blockMsgClass: ‘blockMsg’,

// if it is already blocked, then ignore it (don’t unblock and reblock)

ignoreIfBlocked: false

};

// private data and functions follow…

var pageBlock = null;

var pageBlockEls = [];

function install(el, opts) {

var css, themedCSS;

var full = (el == window);

var msg = (opts && opts.message !== undefined ? opts.message : undefined);

opts = $.extend({}, $.blockUI.defaults, opts || {});

if (opts.ignoreIfBlocked && $(el).data(‘blockUI.isBlocked’))

return;

opts.overlayCSS = $.extend({}, $.blockUI.defaults.overlayCSS, opts.overlayCSS || {});

css = $.extend({}, $.blockUI.defaults.css, opts.css || {});

if (opts.onOverlayClick)

opts.overlayCSS.cursor = ‘pointer’;

themedCSS = $.extend({}, $.blockUI.defaults.themedCSS, opts.themedCSS || {});

msg = msg === undefined ? opts.message : msg;

// remove the current block (if there is one)

if (full && pageBlock)

remove(window, {fadeOut:0});

// if an existing element is being used as the blocking content then we capture

// its current place in the DOM (and current display style) so we can restore

// it when we unblock

if (msg && typeof msg != ‘string’ && (msg.parentNode || msg.jquery)) {

var node = msg.jquery ? msg[0] : msg;

var data = {};

$(el).data(‘blockUI.history’, data);

data.el = node;

data.parent = node.parentNode;

data.display = node.style.display;

data.position = node.style.position;

if (data.parent)

data.parent.removeChild(node);

}

$(el).data(‘blockUI.onUnblock’, opts.onUnblock);

var z = opts.baseZ;

// blockUI uses 3 layers for blocking, for simplicity they are all used on every platform;

// layer1 is the iframe layer which is used to supress bleed through of underlying content

// layer2 is the overlay layer which has opacity and a wait cursor (by default)

// layer3 is the message content that is displayed while blocking

var lyr1, lyr2, lyr3, s;

if (msie || opts.forceIframe)

lyr1 = $(‘’);

else

lyr1 = $(‘

’);

if (opts.theme)

lyr2 = $(‘

’);

else

lyr2 = $(‘

’);

if (opts.theme && full) {

s = ‘

’;

if ( opts.title ) {

s += ‘

’+(opts.title || ’ ‘)+’ ';

}

s += ‘

’;

s += ‘’;

}

else if (opts.theme) {

s = ‘

’;

if ( opts.title ) {

s += ‘

’+(opts.title || ’ ‘)+’ ';

}

s += ‘

’;

s += ‘’;

}

else if (full) {

s = ‘

’;

}

else {

s = ‘

’;

}

lyr3 = $(s);

// if we have a message, style it

if (msg) {

if (opts.theme) {

lyr3.css(themedCSS);

lyr3.addClass(‘ui-widget-content’);

}

else

lyr3.css(css);

}

// style the overlay

if (!opts.theme /&& (!opts.applyPlatformOpacityRules)/)

lyr2.css(opts.overlayCSS);

lyr2.css(‘position’, full ? ‘fixed’ : ‘absolute’);

// make iframe layer transparent in IE

if (msie || opts.forceIframe)

lyr1.css(‘opacity’,0.0);

//$([lyr1[0],lyr2[0],lyr3[0]]).appendTo(full ? ‘body’ : el);

var layers = [lyr1,lyr2,lyr3], $par = full ? $(‘body’) : $(el);

$.each(layers, function() {

this.appendTo($par);

});

if (opts.theme && opts.draggable && $.fn.draggable) {

lyr3.draggable({

handle: ‘.ui-dialog-titlebar’,

cancel: ‘li’

});

}

// ie7 must use absolute positioning in quirks mode and to account for activex issues (when scrolling)

var expr = setExpr && (!$.support.boxModel || $(‘object,embed’, full ? null : el).length > 0);

if (ie6 || expr) {

// give body 100% height

if (full && opts.allowBodyStretch && $.support.boxModel)

$(‘html,body’).css(‘height’,‘100%’);

// fix ie6 issue when blocked element has a border width

if ((ie6 || !$.support.boxModel) && !full) {

var t = sz(el,‘borderTopWidth’), l = sz(el,‘borderLeftWidth’);

var fixT = t ? ‘(0 - ‘+t+’)’ : 0;

var fixL = l ? ‘(0 - ‘+l+’)’ : 0;

}

// simulate fixed position

$.each(layers, function(i,o) {

var s = o[0].style;

s.position = ‘absolute’;

if (i < 2) {

if (full)

s.setExpression(‘height’,‘Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.support.boxModel?0:’+opts.quirksmodeOffsetHack+‘) + “px”’);

else

s.setExpression(‘height’,‘this.parentNode.offsetHeight + “px”’);

if (full)

s.setExpression(‘width’,‘jQuery.support.boxModel && document.documentElement.clientWidth || document.body.clientWidth + “px”’);

else

s.setExpression(‘width’,‘this.parentNode.offsetWidth + “px”’);

if (fixL) s.setExpression(‘left’, fixL);

if (fixT) s.setExpression(‘top’, fixT);

}

else if (opts.centerY) {

if (full) s.setExpression(‘top’,‘(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + “px”’);

s.marginTop = 0;

}

else if (!opts.centerY && full) {

var top = (opts.css && opts.css.top) ? parseInt(opts.css.top, 10) : 0;

var expression = ‘((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + ‘+top+’) + “px”’;

s.setExpression(‘top’,expression);

}

});

}

// show the message

if (msg) {

if (opts.theme)

lyr3.find(‘.ui-widget-content’).append(msg);

else

lyr3.append(msg);

if (msg.jquery || msg.nodeType)

$(msg).show();

}

if ((msie || opts.forceIframe) && opts.showOverlay)

最后

技术是没有终点的,也是学不完的,最重要的是活着、不秃。零基础入门的时候看书还是看视频,我觉得成年人,何必做选择题呢,两个都要。喜欢看书就看书,喜欢看视频就看视频。最重要的是在自学的过程中,一定不要眼高手低,要实战,把学到的技术投入到项目当中,解决问题,之后进一步锤炼自己的技术。

技术学到手后,就要开始准备面试了,找工作的时候一定要好好准备简历,毕竟简历是找工作的敲门砖,还有就是要多做面试题,复习巩固。


enterY && full) {

var top = (opts.css && opts.css.top) ? parseInt(opts.css.top, 10) : 0;

var expression = ‘((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + ‘+top+’) + “px”’;

s.setExpression(‘top’,expression);

}

});

}

// show the message

if (msg) {

if (opts.theme)

lyr3.find(‘.ui-widget-content’).append(msg);

else

lyr3.append(msg);

if (msg.jquery || msg.nodeType)

$(msg).show();

}

if ((msie || opts.forceIframe) && opts.showOverlay)

最后

技术是没有终点的,也是学不完的,最重要的是活着、不秃。零基础入门的时候看书还是看视频,我觉得成年人,何必做选择题呢,两个都要。喜欢看书就看书,喜欢看视频就看视频。最重要的是在自学的过程中,一定不要眼高手低,要实战,把学到的技术投入到项目当中,解决问题,之后进一步锤炼自己的技术。

技术学到手后,就要开始准备面试了,找工作的时候一定要好好准备简历,毕竟简历是找工作的敲门砖,还有就是要多做面试题,复习巩固。

[外链图片转存中…(img-W2P7L1TH-1718014229510)]

相关内容

热门资讯

秒懂普及”珊瑚互娱房卡领取码“... 秒懂普及”珊瑚互娱房卡领取码“王者大厅房间卡怎么购买游戏中心打开微信,添加客服【113857776】...
秒懂教程!我买微信牛牛房卡链接... 斗牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:71319951许多玩家在游戏中会购买房卡来享受...
正规平台有哪些,怎么买斗牛房卡... 微信游戏中心:火神大厅房卡在哪里买打开微信,添加客服微信【88355042】,进入游戏中心或相关小程...
给大家讲解“购买斗牛房卡联系方... 起点大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房卡...
ia攻略/游戏推荐斗牛房卡出售... ia攻略/游戏推荐斗牛房卡出售长虹大厅/科技房卡多少钱一张Sa9Ix苹果iPhone 17手机即将进...
一分钟实测分享”时光互娱低价获... 第二也可以在游戏内商城:在游戏界面中找到 “微信金花,斗牛链接房卡”“商城”选项,选择房卡的购买选项...
一分钟了解!牛牛房卡游戏平台加... 微信游戏中心:乐乐堂房卡在哪里买打开微信,添加客服微信【88355042】,进入游戏中心或相关小程序...
正规平台有哪些,金花房卡是正规... 海航大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:【3329006910】或QQ:332900...
秒懂教程!微信牛牛房间怎么弄,... 斗牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:66336574许多玩家在游戏中会购买房卡来享受...
终于找到“微信怎样开炸金花房间... 金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房卡来享...
秒懂百科”海洋世界哪里有详细房... 哪里有详细房卡介绍是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:113857776许多玩家在游戏中...
头条推荐!游戏推荐斗牛房卡出售... 头条推荐!游戏推荐斗牛房卡出售新神兽/流樱大厅/微信链接房间卡怎么购买新神兽/流樱大厅是一款非常受欢...
推荐一款!怎么买斗牛房卡朱雀大... 微信游戏中心:朱雀大厅房卡在哪里买打开微信,添加客服微信【88355042】,进入游戏中心或相关小程...
玩家攻略,牛牛房卡代理荣耀联盟... 荣耀联盟是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:【3329006910】或QQ:332900...
IA解析/牛牛房卡游戏平台加盟... IA解析/牛牛房卡游戏平台加盟天道联盟/随意玩/微信链接房卡卖家联系方式Sa9Ix苹果iPhone ...
分享经验”百万牛哪里买低价获取... 分享经验”百万牛哪里买低价获取“新老夫子房卡充值游戏中心打开微信,添加客服【113857776】,进...
一分钟了解!金花房卡出售大众互... 今 日消息,大众互娱房卡添加微信33549083 苹果今日发布了 iOS 16.1 正式版更新,简单...
秒懂教程!微信买链接拼三张房卡... 拼三张是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:56001354许多玩家在游戏中会购买房卡来享...
房卡必备教程“购买金花房卡联系... 新琉璃金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡...
1分秒分析”茄子娱乐房卡详细充... 第二也可以在游戏内商城:在游戏界面中找到 “微信金花,斗牛链接房卡”“商城”选项,选择房卡的购买选项...