原生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 相关文章推荐
Javascript图像处理—为矩阵添加常用方法
Dec 27 Javascript
js日期、星座的级联显示代码
Jan 23 Javascript
JavaScript实现算术平方根算法-代码超简单
Sep 11 Javascript
基于JS实现新闻列表无缝向上滚动实例代码
Jan 22 Javascript
javascript特效实现——当前时间和倒计时效果的简单实例
Jul 20 Javascript
Node.js 实现简单小说爬虫实例
Nov 18 Javascript
jQueryeasyui 中如何使用datetimebox 取两个日期间相隔的天数
Jun 13 jQuery
JS+HTML+CSS实现轮播效果
Nov 28 Javascript
Vue ElementUi同时校验多个表单(巧用new promise)
Jun 06 Javascript
vue中axios请求的封装实例代码
Mar 23 Javascript
JavaScript实现多个物体同时运动
Mar 12 Javascript
Vue.js中Line第三方登录api的实现代码
Jun 29 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数据类型的总结分析
2013/06/13 PHP
PHP+Mysql+Ajax+JS实现省市区三级联动
2014/05/23 PHP
非常漂亮的JS代码经典广告
2007/10/21 Javascript
ppk谈JavaScript style属性
2008/10/10 Javascript
关于UTF-8的客户端用AJAX方式获取GB2312的服务器端乱码问题的解决办法
2010/11/30 Javascript
jQuery源码中的chunker 正则过滤符分析
2012/07/31 Javascript
artdialog的图片/标题以及关闭按钮不显示的解决方法
2013/06/27 Javascript
JavaScript中创建对象和继承示例解读
2014/02/12 Javascript
jQuery实现倒计时按钮功能代码分享
2014/09/03 Javascript
JavaScript设计模式经典之工厂模式
2016/02/24 Javascript
总结几道关于Node.js的面试问题
2017/01/11 Javascript
使用jQuery.Pin垂直滚动时固定导航
2017/05/24 jQuery
vue.js组件之间传递数据的方法
2017/07/10 Javascript
BootStrap导航栏问题记录
2017/07/31 Javascript
Jquery动态列功能完整实例
2019/08/30 jQuery
vue路由守卫及路由守卫无限循环问题详析
2019/09/05 Javascript
[40:10]2015国际邀请赛全明星表演赛
2015/08/07 DOTA
解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享
2014/06/18 Python
在Python中使用Mako模版库的简单教程
2015/04/08 Python
利用python程序生成word和PDF文档的方法
2017/02/14 Python
Python实现将文本生成二维码的方法示例
2017/07/18 Python
Python之自动获取公网IP的实例讲解
2017/10/01 Python
Python matplotlib画图与中文设置操作实例分析
2019/04/23 Python
python实现批量修改服务器密码的方法
2019/08/13 Python
Python cookie的保存与读取、SSL讲解
2020/02/17 Python
python实现井字棋小游戏
2020/03/04 Python
Python下载网易云歌单歌曲的示例代码
2020/08/12 Python
JAVA和C++的区别
2013/10/06 面试题
工程采购员岗位职责
2014/03/09 职场文书
法制宣传月活动总结
2014/04/29 职场文书
试用期员工工作自我评价
2014/09/10 职场文书
入党后的感想
2015/08/10 职场文书
2019公司管理制度
2019/04/19 职场文书
详解Java ES多节点任务的高效分发与收集实现
2021/06/30 Java/Android
Redis高可用集群redis-cluster详解
2022/03/20 Redis
SpringBoot项目部署到阿里云服务器的实现步骤
2022/06/28 Java/Android