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重复绑定事件造成的后果说明
Mar 02 Javascript
jQuery插件实现屏蔽单个元素使用户无法点击
Apr 12 Javascript
JS Pro-深入面向对象的程序设计之继承的详解
May 07 Javascript
javascript 终止函数执行操作
Feb 14 Javascript
Extjs表单常见验证小结
Mar 07 Javascript
轻量级的原生js日历插件calendar.js使用指南
Apr 28 Javascript
JS轮播图中缓动函数的封装
Nov 25 Javascript
BootStrap与Select2使用小结
Feb 17 Javascript
vue19 组建 Vue.extend component、组件模版、动态组件 的实例代码
Apr 04 Javascript
js字符串类型String常用操作实例总结
Jul 05 Javascript
react使用antd表单赋值,用于修改弹框的操作
Oct 29 Javascript
JavaScript中遍历的十种方法总结
Dec 15 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 生成饼图 三维饼图
2009/09/28 PHP
PHP的变量总结 新手推荐
2011/04/18 PHP
php冒泡排序、快速排序、快速查找、二维数组去重实例分享
2014/04/24 PHP
JavaScript 高级篇之函数 (四)
2012/04/07 Javascript
js Dialog 实践分享
2012/10/22 Javascript
js统计页面的来访次数实现代码
2014/05/09 Javascript
Node.js编码规范
2014/07/14 Javascript
在JS数组特定索引处指定位置插入元素
2014/07/27 Javascript
JavaScript控制网页层收起和展开效果的方法
2015/04/15 Javascript
用window.onerror捕获并上报Js错误的方法
2016/01/27 Javascript
JS 实现Base64编码与解码实例详解
2016/11/07 Javascript
激动人心的 Angular HttpClient的源码解析
2017/07/10 Javascript
JavaScript与Java正则表达式写法的区别介绍
2017/08/15 Javascript
Angular4学习之Angular CLI的安装与使用教程
2018/01/04 Javascript
实现jquery放大镜的两种方法
2018/02/22 jQuery
使用Angular CLI快速创建Angular项目的一些基本概念和写法小结
2018/04/22 Javascript
vue 点击按钮实现动态挂载子组件的方法
2018/09/07 Javascript
JavaScript栈和队列相关操作与实现方法详解
2018/12/07 Javascript
详解ES7 Decorator 入门解析
2019/02/18 Javascript
layer弹出层自适应高度,垂直水平居中的实现
2019/09/16 Javascript
在vue中使用vuex,修改state的值示例
2019/11/08 Javascript
vue中如何自定义右键菜单详解
2020/12/08 Vue.js
python采集博客中上传的QQ截图文件
2014/07/18 Python
Python3安装Scrapy的方法步骤
2017/11/23 Python
Python Django给admin添加Action的方法实例详解
2019/04/29 Python
python实现小球弹跳效果
2019/05/10 Python
Flask和pyecharts实现动态数据可视化
2020/02/26 Python
使用AJAX和Django获取数据的方法实例
2020/10/25 Python
python实现按日期归档文件
2021/01/30 Python
嘻哈珠宝品牌:KRKC&CO
2020/10/19 全球购物
New delete 与malloc free 的联系与区别
2013/02/04 面试题
小学毕业典礼主持词
2014/03/27 职场文书
产假请假条
2014/04/10 职场文书
2014年信用社工作总结
2014/11/25 职场文书
物业前台接待岗位职责
2015/04/03 职场文书
压缩Redis里的字符串大对象操作
2021/06/23 Redis