js工具方法弹出蒙版


Posted in Javascript onMay 08, 2013
//工具方法弹出蒙版 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';
        }
    }
})();
Javascript 相关文章推荐
popdiv
Jul 14 Javascript
javascript实现二分查找法实现代码
Nov 12 Javascript
js 获取浏览器版本以此来调整CSS的样式
Jun 03 Javascript
浅谈Javascript Base64 加密解密
Dec 28 Javascript
js实现的Easy Tabs选项卡用法实例
Sep 06 Javascript
基于JavaScript实现 网页切出 网站title变化代码
Apr 03 Javascript
js实现各种复制到剪贴板的方法(分享)
Oct 27 Javascript
利用JavaScript如何查询某个值是否数组内
Jul 30 Javascript
基于react组件之间的参数传递(详解)
Sep 05 Javascript
js实现固定区域内的不重叠随机圆
Oct 24 Javascript
使用vue实现通过变量动态拼接url
Jul 22 Javascript
利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)
Apr 13 Javascript
基于JavaScript 声明全局变量的三种方式详解
May 07 #Javascript
你必须知道的JavaScript 变量命名规则详解
May 07 #Javascript
你必须知道的JavaScript 中字符串连接的性能的一些问题
May 07 #Javascript
基于JavaScript实现继承机制之构造函数方法对象冒充的使用详解
May 07 #Javascript
基于JavaScript实现继承机制之调用call()与apply()的方法详解
May 07 #Javascript
JS中的substring和substr函数的区别说明
May 07 #Javascript
js图片自动切换效果处理代码
May 07 #Javascript
You might like
使用adodb lite解决问题
2006/12/31 PHP
PHP求最大子序列和的算法实现
2011/06/24 PHP
Yii获取当前url和域名的方法
2015/06/08 PHP
Laravel日志用法详解
2016/10/09 PHP
php使用preg_match()函数验证ip地址的方法
2017/01/07 PHP
Json_decode 解析json字符串为NULL的解决方法(必看)
2017/02/17 PHP
jQuery 数据缓存data(name, value)详解及实现
2010/01/04 Javascript
JavaScript实现QueryString获取GET参数的方法
2013/07/02 Javascript
Windows 系统下安装和部署Egret的开发环境
2014/07/31 Javascript
jQuery 选择器(61种)整理总结
2016/09/26 Javascript
炫酷的js手风琴效果
2016/10/13 Javascript
D3.js中强制异步文件读取同步的几种方法
2017/02/06 Javascript
分分钟学会vue中vuex的应用(入门教程)
2017/09/14 Javascript
jQuery ajax读取本地json文件的实例
2017/10/31 jQuery
JQuery实现table中tr上移下移的示例(超简单)
2018/01/08 jQuery
详解jQuery中的isPlainObject()使用方法
2018/02/27 jQuery
使用node打造自己的命令行工具方法教程
2018/03/26 Javascript
基于vue和react的spa进行按需加载的实现方法
2018/09/29 Javascript
详解关于表格合并span-method方法的补充(表格数据由后台动态返回)
2019/05/21 Javascript
Python实现进程同步和通信的方法
2018/01/02 Python
python读取有密码的zip压缩文件实例
2019/02/08 Python
pybind11和numpy进行交互的方法
2019/07/04 Python
打印tensorflow恢复模型中所有变量与操作节点方式
2020/05/26 Python
windows系统Tensorflow2.x简单安装记录(图文)
2021/01/18 Python
adidas美国官网:adidas US
2016/09/21 全球购物
什么是规则表达式
2012/05/03 面试题
单身联谊活动方案
2014/01/29 职场文书
企业厂务公开实施方案
2014/03/26 职场文书
学生安全责任书
2014/04/15 职场文书
服务员态度差检讨书
2014/10/28 职场文书
工厂清洁工岗位职责
2015/02/14 职场文书
个人自荐书范文
2015/03/09 职场文书
《学会看病》教学反思
2016/02/17 职场文书
matplotlib如何设置坐标轴刻度的个数及标签的方法总结
2021/06/11 Python
低门槛开发iOS、Android、小程序应用的前端框架详解
2021/10/16 Javascript
python超详细实现完整学生成绩管理系统
2022/03/17 Python