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 相关文章推荐
JTrackBar水平拖动效果
Jul 15 Javascript
jquery下jstree简单应用 - v1.0
Apr 14 Javascript
JS如何将UTC格式时间转本地格式
Sep 04 Javascript
Javascript 修改String 对象 增加去除空格功能(示例代码)
Nov 30 Javascript
Select下拉框模糊查询功能实现代码
Jul 22 Javascript
JS正则替换掉小括号及内容的方法
Nov 29 Javascript
Servlet实现文件上传,可多文件上传示例
Dec 05 Javascript
jQuery EasyUI ProgressBar进度条组件
Feb 28 Javascript
详解vue+webpack+express中间件接口使用
Jul 17 Javascript
vue 下列表侧滑操作实例代码详解
Jul 24 Javascript
JavaScript实现答题评分功能页面
Jun 24 Javascript
vue+element-ui JYAdmin后台管理系统模板解析
Jul 28 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
10款PHP开源商城系统汇总介绍
2015/07/23 PHP
TP5框架页面跳转样式操作示例
2020/04/05 PHP
js 蒙版进度条(结合图片)
2010/03/10 Javascript
jquery一句话全选/取消全选
2011/03/01 Javascript
js面向对象 多种创建对象方法小结
2012/05/21 Javascript
在JavaScript中typeof的用途介绍
2013/04/11 Javascript
对table和ul实现js分页示例分享
2014/02/24 Javascript
jquery中页面Ajax方法$.load的功能使用介绍
2014/10/20 Javascript
移动Web中图片自适应的两种JavaScript解决方法
2015/06/18 Javascript
javascript实现给定半径求出圆的面积
2015/06/26 Javascript
jQuery实现仿QQ空间装扮预览图片的鼠标提示效果代码
2015/10/30 Javascript
IE和Firefox之间在JavaScript语法上的差异
2016/04/22 Javascript
vue.js实现备忘录功能的方法
2017/07/10 Javascript
如何理解Vue的render函数的具体用法
2017/08/30 Javascript
JavaScript插件Tab选项卡效果
2017/11/14 Javascript
layui(1.0.9)文件上传upload,前后端的实例代码
2019/09/26 Javascript
用python实现的可以拷贝或剪切一个文件列表中的所有文件
2009/04/30 Python
python3+PyQt5实现支持多线程的页面索引器应用程序
2018/04/20 Python
Python实现删除时保留特定文件夹和文件的示例
2018/04/27 Python
pycharm 将python文件打包为exe格式的方法
2019/01/16 Python
Python2 Selenium元素定位的实现(8种)
2019/02/25 Python
利用Python制作动态排名图的实现代码
2020/04/09 Python
python实现逢七拍腿小游戏的思路详解
2020/05/26 Python
html5 canvas的绘制文本自动换行的示例代码
2018/09/17 HTML / CSS
Lentiamo丹麦:购买便宜的隐形眼镜
2021/01/13 全球购物
考博自荐信
2013/10/25 职场文书
大学生自助营养快餐店创业计划书
2014/01/13 职场文书
有多年工作经验的自我评价
2014/03/02 职场文书
《沉香救母》教学反思
2014/04/19 职场文书
爱护公物演讲稿
2014/09/09 职场文书
中秋节国旗下演讲稿
2014/09/13 职场文书
作风建设年度心得体会
2014/10/29 职场文书
酒店前台接待岗位职责
2015/04/02 职场文书
爱心捐赠活动简讯
2015/07/20 职场文书
DE1107机评
2022/04/05 无线电
Python爬虫网络请求之代理服务器和动态Cookies
2022/04/12 Python