js实现遮罩层弹出框的方法


Posted in Javascript onJanuary 15, 2015

本文实例讲述了js实现遮罩层弹出框的方法。分享给大家供大家参考。具体分析如下:

昨天公司网站需要弹窗提示一些信息,要我在把弹窗的js代码和弹窗窗口html写在一起哪里需要就调用

不说那么多了,直接上代码,感觉肯定会有兼容问题,看到了请指出啊:

<style>

    #H-dialog{display:none;position:absolute;z-index: 9999999;width:400px;height: auto; background-color: #fff;}

    #H-dialog .close{float:right;font-size: 30px;margin-right: 10px;margin-top:5px;cursor:pointer;}

    #H-dialog .title{height: 40px;padding-left:10px; font-size:20px; line-height:40px;}

    #H-dialog #msgCont{height:36px; margin: 30px 0 50px;padding-left: 65px;font-size: 25px;line-height: 36px;vertical-align: middle; background: url(../Images/ui_alert.png) no-repeat 20px 50%;}

</style>

<div id="H-dialog">

    <a class="close" onclick="popupClose(this)">×</a>

    <div class="title">提示</div>

    <div id="msgCont">内容</div>

</div>
<script type="text/javascript">

    //锁定背景屏幕

    function lockScreen() {

        var clientH = document.body.offsetHeight; //body高度

        var clientW = document.body.offsetWidth; //body宽度

        var docH = document.body.scrollHeight; //浏览器高度

        var docW = document.body.scrollWidth; //浏览器宽度

        var bgW = clientW > docW ? clientW : docW; //取有效宽

        var bgH = clientH > docH ? clientH : docH; //取有效高

        var blackBg = document.createElement("div");

        blackBg.id = "blackBg";

        blackBg.style.position = "absolute";

        blackBg.style.zIndex = "99999";

        blackBg.style.top = "0";

        blackBg.style.left = "0";

        blackBg.style.width = bgW+"px";

        blackBg.style.height = bgH+"px";

        blackBg.style.opacity = "0.4";

        blackBg.style.backgroundColor = "#333";

        document.body.appendChild(blackBg);

    }

    //关闭按钮事件

    function popupClose(el) {

        var blackBg = document.getElementById("blackBg");

        blackBg && document.body.removeChild(blackBg);

        el.parentNode.style.display = "none";

    }

    //自动关闭

    function autoClose(id) {

        id = id || "H-dialog";

        var blackBg = document.getElementById("blackBg");

        var objDiv = document.getElementById(id);

        setTimeout(function(){

            blackBg && document.body.removeChild(blackBg);

            objDiv.style.display = "none";

        },2000);

    }

    /**

    *功能 : 弹窗信息

    *参数1 : 提示信息内容

    *参数2 : 提示信息状态默认0 为提示信息,1为成功信息

    *参数3 : 弹窗div的id,默认"H-dialog"

    *参数4 : 弹窗内容的id,默认"msgCont"

    **/

    function showMsg(msg) {

        msg = msg || "请重新操作";

        var status = arguments[1] || 0,

        popupId = arguments[2] || "H-dialog",

        contentId = arguments[3] || "msgCont";       

        lockScreen();

        //屏幕实际高宽

        var pageWidth = window.innerWidth;

        var pageHeight = window.innerHeight;

        if (typeof pageWidth != "number") {

            if (document.compatMode == "CSS1Compat") {

                pageWidth = document.documentElement.clientWidth;

                pageHeight = document.documentElement.clientHeight;

            } else {

                pageWidth = document.body.clientWidth;

                pageHeight = document.body.clientHeight;

            }

        }

        //滚动条高宽

        var scrollLeft = window.document.documentElement.scrollLeft;

        var scrollTop = 0;

        if (typeof window.pageYOffset != 'undefined') {

            scrollTop = window.pageYOffset;

        } else if (typeof window.document.compatMode != 'undefined' &&

            window.document.compatMode != 'BackCompat') {

            scrollTop = window.document.documentElement.scrollTop;

        } else if (typeof window.document.body != 'undefined') {

            scrollTop = window.document.body.scrollTop;

        }
        var div_X = (pageWidth - 400) / 2 + scrollLeft;

        var div_Y = (pageHeight - 200) / 2 + scrollTop;

        var objDiv = document.getElementById(popupId);

        if (status) {

            document.getElementById(contentId).style.background = "url($Root/Assets/Images/ui_success.png) no-repeat 20px 50%";

        }

        document.getElementById(contentId).innerHTML = msg;

        objDiv.style.display = "block";

        objDiv.style.left = div_X + "px";

        objDiv.style.top = div_Y + "px";

        autoClose(popupId);

    }

</script>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
jquery禁止回车触发表单提交
Dec 12 Javascript
node.js中的fs.openSync方法使用说明
Dec 17 Javascript
jQuery简单实现QQ空间点赞已经取消点赞
Apr 02 Javascript
JS面向对象编程详解
Mar 06 Javascript
带有定位当前位置的百度地图前端web api实例代码
Jun 21 Javascript
vue获取当前激活路由的方法
Mar 17 Javascript
微信小程序利用canvas 绘制幸运大转盘功能
Jul 06 Javascript
vue移动端实现红包雨效果
Jun 23 Javascript
解决vue的变量在settimeout内部效果失效的问题
Aug 30 Javascript
ES6学习教程之Promise用法详解
Nov 22 Javascript
vue-resource 拦截器interceptors使用详解
Jan 18 Vue.js
JS继承最简单的理解方式
Mar 31 Javascript
jquery隔行换色效果实现方法
Jan 15 #Javascript
JavaScript中实现依赖注入的思路分享
Jan 15 #Javascript
jquery实现textarea输入框限制字数的方法
Jan 15 #Javascript
28个常用JavaScript方法集锦
Jan 14 #Javascript
jquery单选框radio绑定click事件实现方法
Jan 14 #Javascript
jquery移动节点实例
Jan 14 #Javascript
jquery获取checkbox的值并post提交
Jan 14 #Javascript
You might like
php mysql数据库操作分页类
2008/06/04 PHP
php中mysql连接方式PDO使用详解
2015/02/25 PHP
PHP批量去除BOM头代码分享
2015/06/26 PHP
php微信公众平台开发(三)订阅事件处理
2016/12/06 PHP
Thinkphp5.0框架视图view的模板布局用法分析
2019/10/12 PHP
js检测客户端不是firefox则提示下载
2007/04/07 Javascript
JavaScript动态插入script的基本思路及实现函数
2013/11/11 Javascript
JS实现点击按钮控制Div变宽、增高及调整背景色的方法
2015/08/05 Javascript
详解JavaScript对象和数组
2015/12/03 Javascript
浅析javascript函数表达式
2016/02/10 Javascript
Jquery Easyui进度条组件Progress使用详解(8)
2020/03/26 Javascript
js实现tab切换效果
2017/02/16 Javascript
微信小程序实现根据字母选择城市功能
2017/08/16 Javascript
浅谈箭头函数写法在ReactJs中的使用
2017/08/22 Javascript
详解axios 全攻略之基本介绍与使用(GET 与 POST)
2017/09/15 Javascript
jQuery+CSS实现的table表格行列转置功能示例
2018/01/08 jQuery
Vue前端开发规范整理(推荐)
2018/04/23 Javascript
vue中v-model的应用及使用详解
2018/06/27 Javascript
基于Bootstrap下拉框插件bootstrap-select使用方法详解
2018/08/07 Javascript
浅谈webpack构建工具配置和常用插件总结
2020/05/11 Javascript
解决vue init webpack 下载依赖卡住不动的问题
2020/11/09 Javascript
[01:36]极致酷炫!TI9典藏宝瓶+撼地者至宝展示
2019/06/11 DOTA
python开发的小球完全弹性碰撞游戏代码
2013/10/15 Python
python实现批量获取指定文件夹下的所有文件的厂商信息
2014/09/28 Python
Python爬取京东的商品分类与链接
2016/08/26 Python
解决python虚拟环境切换无效的问题
2020/04/30 Python
AmazeUI框架搭建的方法步骤(图文)
2020/08/17 HTML / CSS
英国殿堂级有机护肤品牌:Rodial
2017/04/17 全球购物
八年级物理教学反思
2014/01/19 职场文书
社会实践感言
2014/01/25 职场文书
工地质量标语
2014/06/12 职场文书
讲座开场白台词和结束语
2015/05/29 职场文书
房产遗嘱范本
2015/08/06 职场文书
感恩信:写给爸爸妈妈的一封感谢信
2019/09/12 职场文书
导游词之镇江焦山
2019/11/21 职场文书
详解Html5项目适配系统深色模式方案总结
2021/04/14 HTML / CSS