原生js实现弹出层效果


Posted in Javascript onJanuary 20, 2017

知识要点

1.遮罩层的宽度和高度是js获取页面的宽高(页面内容)

//获取遮罩层(内容)的高度和宽度
 var sHeight=document.documentElement.scrollHeight;
 var sWidth=document.documentElement.scrollWidth;

2.登录框设置静止定位fixed

3.登录框居中显示公式:(可视区域宽高-登录框宽高)/2

//获取login的宽度和高度并设置偏移值
 var dHeight=oLogin.offsetHeight;
 var dWidth=oLogin.offsetWidth;
 oLogin.style.left=(sWidth-dWidth)/2+"px";
 oLogin.style.top=(wHeight-dHeight)/2+"px";

完整代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>demo</title>
<style>
body,h1,h2,h3,h4,h5,h6,hr,p,blockquote,dl,dt,dd,ul,ol,li,pre,form,fieldset,legend,button,input,textarea,th,td{margin:0;padding:0;}
body,button,input,select,textarea{font:12px/1.5 tahoma,arial,\5b8b\4f53;}
h1,h2,h3,h4,h5,h6{font-size:100%;}
address,cite,dfn,em,var{font-style:normal;}
code,kbd,pre,samp{font-family:courier new,courier,monospace;}
small{font-size:12px;}
ul,ol{list-style:none;}
a{text-decoration:none;}
a:hover{text-decoration:underline;}
sup{vertical-align:text-top;}
sub{vertical-align:text-bottom;}
legend{color:#000;}
fieldset,img{border:0;}
button,input,select,textarea{font-size:100%;}
table{border-collapse:collapse;border-spacing:0;}
.clear{clear: both;float: none;height: 0;overflow: hidden;}
p{font-size: 100px;}
#mask{
 background: #000;
 opacity: 0.75;
 filter: alpha(opacity=75);
 height: 1000px;
 width: 100%;
 position: absolute;
 left: 0;
 top: 0;
 z-index: 1000;
}
#login{
 position: fixed;
 left: 30%;
 top: 30%;
 z-index:1001; 
}
.loginCon{
 width: 670px;
 height: 380px;
 background: #fff;
 border:5px solid #F01400;
}
#close{
 width: 30px;
 height: 30px;
 background: blue;
 cursor: pointer;
 position: absolute;
 right: 10px;
 top: 10px;
}
#btnLogin{
 width: 80px;
 height: 40px;
 background: #F01400;
 margin:0 auto;
 display: block;
 cursor: pointer;
 border-style: none;
 color: #fff;
 font-size: 16px;
}
</style> 
</head> 
<body>
<button id="btnLogin">登录</button> 
<!--
<div id="mask"></div>
<div id="login">
 <div class="loginCon">
 <div id="close"></div>
 </div>
</div>
-->
<p>1</p>
<p>1</p>
<p>1</p>
<p>1</p>
<p>1</p>
<p>1</p>
<p>1</p>
<p>1</p>
<p>1</p>
<p>1</p>
<script type="text/javascript">
function openNew(){
 //获取页面body!内容!的高度和宽度
 var sHeight=document.documentElement.scrollHeight;
 var sWidth=document.documentElement.scrollWidth;
 //获取可视区域高度,宽度与页面内容的宽度一样
 var wHeight=document.documentElement.clientHeight;
 //创建遮罩层div并插入body
 var oMask=document.createElement("div");
 oMask.id="mask";
 oMask.style.height=sHeight+"px";
 //宽度直接用100%在样式里
 document.body.appendChild(oMask);
 //创建登录层div并插入body
 var oLogin=document.createElement("div");
 oLogin.id="login";
 oLogin.innerHTML="<div class='loginCon'><div id='close'></div></div>"
 document.body.appendChild(oLogin);
 //获取login的宽度和高度并设置偏移值
 var dHeight=oLogin.offsetHeight;
 var dWidth=oLogin.offsetWidth;
 oLogin.style.left=(sWidth-dWidth)/2+"px";
 oLogin.style.top=(wHeight-dHeight)/2+"px";
 //获取关闭按钮
 var oClose=document.getElementById("close");
 oMask.onclick=oClose.onclick=function(){
  document.body.removeChild(oMask);
  document.body.removeChild(oLogin);
 }
}
window.onload=function(){
 var oBtn=document.getElementById("btnLogin");
 oBtn.onclick=function(){
  openNew();
 }
}
</script> 
</body> 
</html>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
新闻内页-JS分页
Jun 07 Javascript
JavaScript的面向对象方法以及差别
Mar 31 Javascript
使用js 设置url参数
Jul 08 Javascript
js中Image对象以及对其预加载处理示例
Nov 20 Javascript
JavaScript避免内存泄露及内存管理技巧
Sep 05 Javascript
JavaScript设计模式之策略模式实例
Oct 10 Javascript
jQuery中Form相关知识汇总
Jan 06 Javascript
基于jquery实现的仿优酷图片轮播特效代码
Jan 13 Javascript
简单几步实现返回顶部效果
Dec 05 Javascript
详解基于webpack和vue.js搭建开发环境
Apr 05 Javascript
js实现下拉框二级联动
Dec 04 Javascript
微信小程序request请求封装,验签代码实例
Dec 04 Javascript
jQuery中DOM节点删除之empty与remove
Jan 20 #Javascript
原生js实现图片放大缩小计时器效果
Jan 20 #Javascript
详解基于angular路由的requireJs按需加载js
Jan 20 #Javascript
原生js实现新闻列表展开/收起全文功能
Jan 20 #Javascript
Vue.js实现表格动态增加删除的方法(附源码下载)
Jan 20 #Javascript
node.js与C语言 实现遍历文件夹下最大的文件,并输出路径,大小
Jan 20 #Javascript
微信小程序通过api接口将json数据展现到小程序示例
Jan 20 #Javascript
You might like
PHP mb_convert_encoding 获取字符串编码类型实现代码
2009/04/26 PHP
PHPWind 发帖回帖Api PHP版打包下载
2010/02/08 PHP
sphinx增量索引的一个问题
2011/06/14 PHP
php实现在线通讯录功能(附源码)
2016/05/13 PHP
php技巧小结【推荐】
2017/01/19 PHP
禁用页面部分JavaScript不是全部而是部分
2014/09/03 Javascript
JS实现浏览器状态栏文字从右向左弹出效果代码
2015/10/27 Javascript
jQuery学习笔记之入门
2016/12/14 Javascript
json数据传到前台并解析展示成列表的方法
2018/08/06 Javascript
vue-cli项目中使用echarts图表实例
2018/10/22 Javascript
vue-cli3.0实现一个多页面应用的历奇经历记录总结
2020/03/16 Javascript
Python中input和raw_input的一点区别
2014/10/21 Python
Python MySQL数据库连接池组件pymysqlpool详解
2017/07/07 Python
Python 模拟员工信息数据库操作的实例
2017/10/23 Python
Mac中Python 3环境下安装scrapy的方法教程
2017/10/26 Python
python pandas 对时间序列文件处理的实例
2018/06/22 Python
使用Python更换外网IP的方法
2018/07/09 Python
几个适合python初学者的简单小程序,看完受益匪浅!(推荐)
2019/04/16 Python
Django Rest framework频率原理与限制
2019/07/26 Python
python如何进入交互模式
2020/07/06 Python
HTML5 CSS3给网站设计带来出色效果
2009/07/16 HTML / CSS
应届生的求职推荐信范文
2013/11/30 职场文书
百度吧主申请感言
2014/01/12 职场文书
物流业务员岗位职责
2014/02/08 职场文书
党员民主生活会个人整改措施材料
2014/09/16 职场文书
医院2014国庆节活动策划方案
2014/09/21 职场文书
预备党员对照检查材料思想汇报
2014/09/24 职场文书
大学生党员批评与自我批评
2014/09/28 职场文书
期末个人总结范文
2015/02/13 职场文书
暑期实践个人总结
2015/03/06 职场文书
2015年司法所工作总结
2015/04/27 职场文书
单位政审意见范文
2015/06/04 职场文书
催款函范本大全
2015/06/24 职场文书
周一早安温馨问候祝福语!
2019/07/15 职场文书
logback如何自定义日志存储
2021/08/30 Java/Android
Win10 和 Win11可以共存吗? win10/11产品生命周期/服务更新介绍
2021/11/21 数码科技