//工具方法弹出蒙版 add by dning 2012-11-4 var maskShow = (function () { var mask = null; var curr = null; var free = false; var func = { onresize: null, onscroll: null }; return function (el, fre, Type) { if (!mask) { initMask(); } free = !!fre; if (el == null) { show(curr, false); show(mask, false); showSelects(true); //for ie6 curr = null; if (!free) for (var s in func) { window[s] = func[s]; func[s] = null; } } else { if (curr) show(curr, false); curr = $(el)[0]; checkVisib(curr); rePos(); mask.style.zIndex = maskShow.zIndexBack || 15; curr.style.zIndex = maskShow.zIndexFore || 20; show(curr, true); show(mask, true); showSelects(false, el); //for ie6 if (!free) for (var s in func) { func[s] = window[s]; window[s] = rePos; } } if (Type == 0) { mask.style.width = document.body.clientWidth + 'px'; mask.style.height = document.body.clientHeight + 'px'; if (el) el.style.position = "fixed"; } else { mask.style.width = "0px"; mask.style.height = "0px"; if (el) el.style.position = "absolute"; } }; function showSelects(b, box) { if (!browser.IE6) return; var sel = document.getElementsByTagName('select'); var vis = b ? 'visible' : 'hidden'; for (var i = 0; i < sel.length; i++) { if ((b || !childOf(sel[i], box)) && sel[i].currentStyle.visibility != vis) sel[i].style.visibility = vis; } } function childOf(a, b) { while (a && a != b) a = a.parentNode; return a == b; } function initMask() { /* mask=document.createElement('iframe'); mask.src='://0'; */ mask = document.createElement('div'); mask.style.cssText = 'background-color:{$c};border:none;position:absolute;visibility:hidden;opacity:{$a};filter:alpha(opacity={$A})'.replaceWith({ c: maskShow.bgColor || '#000', a: maskShow.bgAlpha || '0.5', A: maskShow.bgAlpha ? parseInt(maskShow.bgAlpha * 100) : '50' }); document.body.appendChild(mask); maskShow.mask = mask; } function checkVisib(el) { var sty = el.style; sty.position = 'absolute'; sty.left = '-10000px'; sty.top = '-10000px'; sty.visibility = 'visible'; sty.display = 'block'; sty.zIndex = 10; } function rePos() { if (!curr) return; var ps = $pageSize('doc'); setRect(mask, ps); var rc = centerPos(ps, curr.offsetWidth, curr.offsetHeight); if (rc.left < ps.scrollLeft) rc.left = ps.scrollLeft; if (rc.top < ps.scrollTop) rc.top = ps.scrollTop; setRect(curr, rc); } function centerPos(ps, cw, ch) { return { left: ((ps.winWidth - cw) >> 1) + ps.scrollLeft + (maskShow.adjustX || 0), top: ((ps.winHeight - ch) >> 1) + ps.scrollTop + (maskShow.adjustY || 0) }; } function setRect(el, rect) { var sty = el.style; sty.left = (rect.left || 0) + 'px'; sty.top = (rect.top || 0) + 'px'; if ('width' in rect) sty.width = rect.width + 'px'; if ('height' in rect) sty.height = rect.height + 'px'; } function show(el, b) { if (!el) return; el.style.visibility = 'visible'; if (!b) { el.style.left = -el.offsetWidth - 100 + 'px'; el.style.top = -el.offsetHeight - 100 + 'px'; } } })();
作者:Tyler Ning
出处:http://www.cnblogs.com/tylerdonet/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过以下邮箱地址williamningdong@gmail.com 联系我,非常感谢。