Js制作简单弹出层DIV在页面居中 中间显示遮罩的具体方法


Posted in Javascript onAugust 08, 2013

这两天要用到正好练练手,比想象中碰到的问题要多,比如:
ie6背景透明 ie6居中显示 还有对js对象的理解
openID=显示按钮,conID=需要显示的div,closeID=关闭按钮
解决了:
1.可以遮挡ie6下的select元素 但是在ie6下div没有透明度
2.弹出的div可以一直在浏览器屏幕中间显示
问题:
1.目前不支持.class 只支持#id
2.需要显示的div需要自己设置css
3.在ie6下需要设置css
例如div {_position: absolute;_top: expression(documentElement.scrollTop + 340 + "px"); }
4.ie6下背景div没有透明度 这里我上网搜到的结果都不能解决 如果您有方法请给我留言

<!DOCTYPE HTML>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Js制作简单弹出层DIV在页面居中 中间显示 遮罩 方法</title>
<style type="text/css">
*{margin:0;padding:0;}
#bt{border: 2px solid #000;background-color: #ccc;cursor: pointer;padding: 2px 5px;}
/****订单弹出框*****/
.orderMsg{ position:fixed;_position: absolute;_top: expression(documentElement.scrollTop + 340 + "px"); background:#fff; border:1px solid #939395; width:500px; height:340px;top: 50%;left: 50%;margin: -200px 0 0 -250px; overflow:hidden; z-index:99999; font-size:14px; color:#000; display:none;}
.orderMsg dl{ overflow:hidden; padding:20px; margin:0;}
.orderMsg dl dt{ line-height:30px;}
.orderMsg dl dd{ line-height:25px; height:25px; padding-left:10px; margin:0;}
.orderMsg dl dd label{ padding-left:5px;}
.orderMsg dl dd.cBtn{ width:102px; height:28px; background:url(../images/member/chooseBtn.gif) no-repeat; margin-top:10px; padding:0;}
.orderMsg dl dd.cBtn a{ display:block; text-align:center;}
.orderMsg dl dd.cBtn a:link,.orderMsg dl dd.cBtn a:visited{ color:#000;}
.orderMsg dl dd.lBtn{ float:left; display:inline; margin-left:100px;}
.orderMsg dl dd.rBtn{ float:left; display:inline; margin-left:10px;}
</style>
</head>
<body>
<a id="bt">点击弹出div</a>
<div style="height:1000px;">
sdfdsf
<select>
<option>Volvo</option>
<option selected="selected">Saab</option>
<option>Mercedes</option>
<option>Audi</option>
</select>
</div>
<a id="bt">点击弹出div</a>
<div style="height:1000px;">
sdfdsf
<select>
<option>Volvo</option>
<option selected="selected">Saab</option>
<option>Mercedes</option>
<option>Audi</option>
</select>
</div>
<div id="orderMsg" class="orderMsg" style="display: none;">
<dl>
<dt>请您告知我们取消订单的原因,以便我们改进。非常感谢!</dt>
<dd><input type="radio" name="reason" id="reason1"><label for="reason1">改变主意,现在不想买了</label></dd>
<dd><input type="radio" name="reason" id="reason2"><label for="reason2">刚才信息填错了,要重新下单</label></dd>
<dd><input type="radio" name="reason" id="reason3"><label for="reason3">先取消,再更换或添加新商品</label></dd>
<dd><input type="radio" name="reason" id="reason4"><label for="reason4">网银,信用卡等支付有问题</label></dd>
<dd><input type="radio" name="reason" id="reason5"><label for="reason5">等待时间过长,不耐烦了</label></dd>
<dd><input type="radio" name="reason" id="reason6"><label for="reason6">商品价格较贵</label></dd>
<dd><input type="radio" name="reason" id="reason7"><label for="reason7">出现商品缺货情况</label></dd>
<dd><input type="radio" name="reason" id="reason8"><label for="reason8">其它的原因</label></dd>
<dd><input type="radio" disabled="disabled"><label>72小时到期自动取消(不可选)</label></dd>
<dd class="cBtn lBtn"><a href="#">选好了</a></dd><dd class="cBtn rBtn"><a href="#" onclick="" id="close">点击取消</a></dd>
</dl>
</div>
<script type="text/javascript">
/*
openID=显示按钮,conID=需要显示的div,closeID=关闭按钮
解决了:
1.可以遮挡ie6下的select元素 但是在ie6下div没有透明度
2.弹出的div可以一直在浏览器屏幕中间显示
问题:
1.目前不支持.class 只支持#id
2.需要显示的div需要自己设置css
3.在ie6下需要设置css
例如div {_position: absolute;_top: expression(documentElement.scrollTop + 340 + "px"); }
4.ie6下背景div没有透明度 这里我上网搜到的结果都不能解决 如果您有方法请给我留言
*/
var _CalF = { //便捷方法
$ : function(id){return document.getElementById(id)},
create : function(id){return document.createElement(id)},
append : function(id){return document.body.appendChild(id)},
remove : function(id){return document.body.removeChild(id)}
}
function popup(openID,conID,closeID){
this.onclick(openID,conID,closeID);
}
popup.prototype = {
cssStyle : "width:100%;position:absolute;left:0;top:0;filter:alpha(opacity = 50);opacity:0.5;border:0;overflow:auto;",
createShadowDiv : function(){ //背景遮罩
var shadowDiv = _CalF.create("div");
shadowDiv.id = "shadowDiv";
shadowDiv.style.cssText = this.cssStyle;
shadowDiv.style.height = document.body.scrollHeight + "px";
shadowDiv.style.backgroundColor = "#000"
shadowDiv.style.zindex = 100;
_CalF.append(shadowDiv);
},
createIframe : function(){ //iframe
var iframe = _CalF.create("iframe");
iframe.id = "shadowIframe";
iframe.style.cssText = this.cssStyle;
iframe.style.height = document.body.scrollHeight + "px";
iframe.style.zindex = 99;
_CalF.append(iframe);
},
removeDiv : function(){
_CalF.remove(_CalF.$("shadowDiv"));
_CalF.remove(_CalF.$("shadowIframe"));
},
onclick : function(openID,conID,closeID){
var that = this; 
_CalF.$(openID).onclick = function(){
if(window.ActiveXObject){ //ie6
if(!window.XMLHttpRequest){
document.body.style.cssText = "_background-image: url(about:blank);_background-attachment: fixed;";
}
} 
that.createIframe();
that.createShadowDiv();
_CalF.$(conID).style.display = "block";
}
document.getElementById(closeID).onclick = function(){
_CalF.$(conID).style.display = "none";
that.removeDiv(); 
}
}
}
var bt = new popup("bt","orderMsg","close");
</script>
</body>
</html>
Javascript 相关文章推荐
Firefox中beforeunload事件的实现缺陷浅析
May 03 Javascript
JavaScript中判断对象类型的几种方法总结
Nov 11 Javascript
使用js复制链接中的部分文字的方法
Jul 30 Javascript
jquery实现模拟百分比进度条渐变效果代码
Oct 29 Javascript
jQuery-1.9.1源码分析系列(十一)DOM操作续之克隆节点
Dec 01 Javascript
移动端jQuery修正Web页面滑动时div问题的两则实例
May 30 Javascript
EasyUI的doCellTip实现鼠标放到单元格上提示单元格内容
Aug 24 Javascript
JavaScript中setTimeout的那些事儿
Nov 14 Javascript
vue.extend与vue.component的区别和联系
Sep 19 Javascript
node.js使用fs读取文件出错的解决方案
Oct 23 Javascript
layui form表单提交后实现自动刷新
Oct 25 Javascript
vue中三级导航的菜单权限控制
Mar 31 Vue.js
JS+css 图片自动缩放自适应大小
Aug 08 #Javascript
javascript:文字不间断向左移动的实例代码
Aug 08 #Javascript
js获得地址栏?问号后参数的方法
Aug 08 #Javascript
让页面上两个div中的滚动条(滑块)同步运动示例
Aug 07 #Javascript
js动态创建、删除表格示例代码
Aug 07 #Javascript
关于extjs4如何获取grid修改后的数据的问题
Aug 07 #Javascript
js取两个数组的交集|差集|并集|补集|去重示例代码
Aug 07 #Javascript
You might like
基于php设计模式中工厂模式详细介绍
2013/05/15 PHP
PHP计算2点经纬度之间的距离代码
2013/08/12 PHP
php缩放gif和png图透明背景变成黑色的解决方法
2014/10/14 PHP
php 解析xml 的四种方法详细介绍
2016/10/26 PHP
PHP使用XMLWriter读写xml文件操作详解
2018/07/31 PHP
Array.slice()与Array.splice()的返回值类型
2006/10/09 Javascript
google 搜索框添加关键字实现代码
2010/04/24 Javascript
JavaScript中获取HTML元素值的三种方法
2016/06/20 Javascript
JS针对浏览器窗口关闭事件的监听方法集锦
2016/06/24 Javascript
如何检测JavaScript的各种类型
2016/07/30 Javascript
JavaScript中校验银行卡号的实现代码
2016/12/19 Javascript
微信小程序 安全包括(框架、功能模块、账户使用)详解
2017/01/16 Javascript
JS基于面向对象实现的多个倒计时器功能示例
2017/02/28 Javascript
Vue仿手机qq的实例代码(demo)
2017/09/08 Javascript
微信小程序基于本地缓存实现点赞功能的方法
2017/12/18 Javascript
关于在vue 中使用百度ueEditor编辑器的方法实例代码
2018/09/14 Javascript
React通过redux-persist持久化数据存储的方法示例
2019/02/14 Javascript
使用flow来规范javascript的变量类型
2019/09/12 Javascript
jquery弹窗时禁止body滚动条滚动的例子
2019/09/21 jQuery
微信小程序转化为uni-app项目的方法示例
2020/05/22 Javascript
详解python使用递归、尾递归、循环三种方式实现斐波那契数列
2018/01/16 Python
Python3.5基础之变量、数据结构、条件和循环语句、break与continue语句实例详解
2019/04/26 Python
Python CVXOPT模块安装及使用解析
2019/08/01 Python
Python遍历字典方式就实例详解
2019/12/28 Python
基于Python词云分析政府工作报告关键词
2020/06/02 Python
python 爬取B站原视频的实例代码
2020/09/09 Python
详解CSS3选择器:nth-child和:nth-of-type之间的差异
2017/09/18 HTML / CSS
香港优质食材和美酒专门店:FoodWise
2017/09/01 全球购物
M.M.LaFleur官网:美国职业女装品牌
2020/10/27 全球购物
Java中compareTo和compare的区别
2016/04/12 面试题
教学个人的自我评价分享
2014/02/16 职场文书
服务行业演讲稿
2014/09/02 职场文书
实习班主任自我评价
2015/03/11 职场文书
党小组鉴定意见
2015/06/02 职场文书
2016年第32个教师节红领巾广播稿
2015/12/18 职场文书
《窃读记》教学反思
2016/02/18 职场文书