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 相关文章推荐
JavaScript使用循环和分割来替换和删除元素实例
Oct 13 Javascript
JS中prototype的用法实例分析
Mar 19 Javascript
jQuery的position()方法详解
Jul 19 Javascript
浅谈JS中的!=、== 、!==、===的用法和区别
Sep 24 Javascript
jQuery EasyUI tree 使用拖拽时遇到的错误小结
Oct 10 Javascript
IntersectionObserver API 详解篇
Dec 11 Javascript
bootstrap table表格插件使用详解
May 08 Javascript
vue中的$emit 与$on父子组件与兄弟组件的之间通信方式
May 13 Javascript
微信小程序实现发红包功能
Jul 11 Javascript
vue实现跨域的方法分析
May 21 Javascript
原生js实现拖拽移动与缩放效果
Aug 24 Javascript
vue 项目软键盘回车触发搜索事件
Sep 09 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以指定字段为索引返回数据库所取的数据数组
2013/06/30 PHP
PHP对表单提交特殊字符的过滤和处理方法汇总
2014/02/18 PHP
一个php生成16位随机数的代码(两种方法)
2014/09/16 PHP
PHP实现搜索相似图片
2015/09/22 PHP
php使用环形链表解决约瑟夫问题完整示例
2018/08/07 PHP
List the Stored Procedures in a SQL Server database
2007/06/20 Javascript
关于恒等于(===)和非恒等于(!==)
2007/08/20 Javascript
javascript:文字不间断向左移动的实例代码
2013/08/08 Javascript
JavaScript数组合并的多种方法
2016/05/22 Javascript
JavaScript遍历求解数独问题的主要思路小结
2016/06/12 Javascript
jQuery网页定位导航特效实现方法
2016/12/19 Javascript
很棒的一组js图片轮播特效
2017/01/12 Javascript
基于JavaScript实现购物车功能
2017/02/07 Javascript
vue中计算属性(computed)、methods和watched之间的区别
2017/07/27 Javascript
JS如何实现在页面上快速定位(锚点跳转问题)
2017/08/14 Javascript
vue中的$emit 与$on父子组件与兄弟组件的之间通信方式
2018/05/13 Javascript
vue 动态绑定背景图片的方法
2018/08/10 Javascript
JavaScript实现多态和继承的封装操作示例
2018/08/20 Javascript
Vue 自适应高度表格的实现方法
2020/05/13 Javascript
Python多进程通信Queue、Pipe、Value、Array实例
2014/11/21 Python
matplotlib savefig 保存图片大小的实例
2018/05/24 Python
mac安装scrapy并创建项目的实例讲解
2018/06/13 Python
用Python获取摄像头并实时控制人脸的实现示例
2019/07/11 Python
Django连接数据库并实现读写分离过程解析
2019/11/13 Python
pygame库实现移动底座弹球小游戏
2020/04/14 Python
Python使用monkey.patch_all()解决协程阻塞问题
2020/04/15 Python
Python自动登录QQ的实现示例
2020/08/28 Python
python requests库的使用
2021/01/06 Python
加拿大消费电子和手机购物网站:The Source
2017/01/28 全球购物
办公室助理岗位职责
2013/12/25 职场文书
机械设计专业大学生职业生涯规划书范文
2014/09/13 职场文书
继承公证书格式
2015/01/26 职场文书
毕业实习单位意见
2015/06/04 职场文书
商务英语邮件开头问候语
2015/11/10 职场文书
使用logback实现按自己的需求打印日志到自定义的文件里
2021/08/30 Java/Android
Win11 BitLocker 驱动器加密
2022/04/19 数码科技