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 相关文章推荐
Jquery AJAX 用于计算点击率(统计)
Jun 30 Javascript
JS中setInterval、setTimeout不能传递带参数的函数的解决方案
Apr 28 Javascript
JS辨别访问浏览器判断是android还是ios系统
Aug 19 Javascript
node.js中的buffer.slice方法使用说明
Dec 10 Javascript
jQuery右侧选项卡焦点图片轮播特效代码分享
Sep 05 Javascript
jQuery实现仿QQ在线客服效果的滚动层代码
Oct 15 Javascript
js中利用cookie实现记住密码功能
Aug 20 Javascript
jQuery实现一个简单的轮播图
Feb 19 Javascript
jQuery插件FusionWidgets实现的Cylinder图效果示例【附demo源码】
Mar 23 jQuery
清空元素html(&quot;&quot;) innerHTML=&quot;&quot; 与 empty()的区别和应用(推荐)
Aug 14 Javascript
webpack打包js的方法
Mar 12 Javascript
vue-resourc发起异步请求的方法
Feb 11 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
php学习之 认清变量的作用范围
2010/01/26 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(七)
2014/06/23 PHP
php截取字符串函数分享
2015/02/02 PHP
PHP 范围解析操作符(::)用法分析【访问静态成员和类常量】
2020/04/14 PHP
IE FF OPERA都可用的弹出层实现代码
2009/09/29 Javascript
return false;和e.preventDefault();的区别
2010/07/11 Javascript
JavaScript子窗口ModalDialog中操作父窗口对像
2012/12/11 Javascript
js实现飞入星星特效代码
2014/10/17 Javascript
Javascript 中创建自定义对象的方法汇总
2014/12/04 Javascript
jQuery实现的简单提示信息插件
2015/12/08 Javascript
基于javascript实现最简单的选项卡切换效果
2016/05/16 Javascript
jQuery插件制作的实例教程
2016/05/16 Javascript
使用Angular.js实现简单的购物车功能
2016/11/21 Javascript
从零开始学习Node.js系列教程四:多页面实现的数学运算示例
2017/04/13 Javascript
nodejs使用express获取get和post传值及session验证的方法
2017/11/09 NodeJs
nodejs require js文件入口,在package.json中指定默认入口main方法
2018/10/10 NodeJs
JS实现的获取银行卡号归属地及银行卡类型操作示例
2019/01/08 Javascript
ES6 Map结构的应用实例分析
2019/06/26 Javascript
JavaScript 严格模式(use strict)用法实例分析
2020/03/04 Javascript
精读《Vue3.0 Function API》
2020/05/20 Javascript
[49:20]2014 DOTA2国际邀请赛中国区预选赛5.21 CIS VS TongFu
2014/05/22 DOTA
[50:01]Ti4 冒泡赛第二天 NEWBEE vs Titan
2014/07/15 DOTA
python基础_文件操作实现全文或单行替换的方法
2017/09/04 Python
Python基于回溯法子集树模板解决全排列问题示例
2017/09/07 Python
关于Python数据结构中字典的心得
2017/12/04 Python
pandas DataFrame索引行列的实现
2019/06/04 Python
python pandas模块基础学习详解
2019/07/03 Python
Python流程控制语句的深入讲解
2020/06/15 Python
推荐值得学习的12款python-web开发框架
2020/08/10 Python
美国修容界大佬创建的个人美妆品牌:Kevyn Aucoin Beauty
2018/12/12 全球购物
英语专业毕业生求职简历的自我评价
2013/10/24 职场文书
大学生的四年学习自我评价
2013/12/13 职场文书
2014年教师批评与自我批评思想汇报
2014/09/20 职场文书
基层党支部整改方案
2014/10/25 职场文书
综合实践活动报告
2015/02/05 职场文书
解决Golang time.Parse和time.Format的时区问题
2021/04/29 Golang