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 1.3 和 Validation 验证插件1.5.1
Jul 09 Javascript
ExtJS4 组件化编程,动态加载,面向对象,Direct
May 12 Javascript
SOSO地图JS画出标注和中心点以html形式运行
Aug 09 Javascript
JS中使用Array函数shift和pop创建可忽略参数的例子
May 28 Javascript
jQuery实现文件上传进度条特效
Aug 12 Javascript
Node.js的MongoDB驱动Mongoose基本使用教程
Mar 01 Javascript
JS搜狐面试题分析
Dec 16 Javascript
React中如何引入Angular组件详解
Aug 09 Javascript
vue中img src 动态加载本地json的图片路径写法
Apr 25 Javascript
详解关于表格合并span-method方法的补充(表格数据由后台动态返回)
May 21 Javascript
js+springMVC 提交数组数据到后台的实例
Sep 21 Javascript
vue 封装面包屑组件教程
Nov 16 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 miniBB中文乱码问题解决方法
2008/11/25 PHP
PHP 安全检测代码片段(分享)
2013/07/05 PHP
PHP入门教程之使用Mysqli操作数据库的方法(连接,查询,事务回滚等)
2016/09/11 PHP
php使用高斯算法实现图片的模糊处理功能示例
2016/11/11 PHP
php读取qqwry.dat ip地址定位文件的类实例代码
2016/11/15 PHP
PHP文件管理之实现网盘及压缩包的功能操作
2017/09/20 PHP
javascript 面向对象思想 附源码
2009/07/07 Javascript
关于session和cookie的简单理解
2016/06/08 Javascript
jQuery实现简单的tab标签页效果
2016/09/12 Javascript
详解vue与后端数据交互(ajax):vue-resource
2017/03/16 Javascript
js定时器+简单的动画效果实例
2017/11/10 Javascript
使用Vuex解决Vue中的身份验证问题
2018/09/28 Javascript
webpack 最佳配置指北(推荐)
2020/01/07 Javascript
Python两个整数相除得到浮点数值的方法
2015/03/18 Python
Python 对象中的数据类型
2017/05/13 Python
解决python中遇到字典里key值为None的情况,取不出来的问题
2018/10/17 Python
python 找出list中最大或者最小几个数的索引方法
2018/10/30 Python
Django Aggregation聚合使用方法解析
2019/08/01 Python
python 实现单通道转3通道
2019/12/03 Python
python GUI库图形界面开发之PyQt5表单布局控件QFormLayout详细使用方法与实例
2020/03/06 Python
玖熙女鞋美国官网:Nine West
2016/10/06 全球购物
微软英国官方网站:Microsoft英国
2016/10/15 全球购物
在网上学习全世界最好的课程:Coursera
2017/11/07 全球购物
LG西班牙网上商店:Tienda LG Online Es
2019/07/30 全球购物
JVM是一个编译程序还是解释程序
2012/09/11 面试题
医院护士专业个人的求职信
2013/12/09 职场文书
2014年三万活动总结
2014/04/26 职场文书
中学生旷课检讨书500字
2014/10/29 职场文书
2014年副班长工作总结
2014/12/10 职场文书
教师“一帮一”结对子活动总结
2015/05/07 职场文书
毕业论文致谢范文
2015/05/14 职场文书
小学毕业教师寄语
2019/06/21 职场文书
CSS3 实现NES游戏机的示例代码
2021/04/21 HTML / CSS
python如何读取.mtx文件
2021/04/22 Python
js基础语法与maven项目配置教程案例
2021/07/15 Javascript
十大经典日本动漫排行榜 海贼王第三,犬夜叉仅第八
2022/03/18 日漫