使用JavaScript实现弹出层效果的简单实例


Posted in Javascript onMay 31, 2016

声明

阅读本文需要有一定的HTML、CSS和JavaScript基础

设计

实现弹出层效果的思路非常简单:将待显示的内容先隐藏,在触发某种条件后(如点击按钮),将原本隐藏的内容显示出来。

实现

<!DOCTYPE html>
<html>
<head>
  <title>Window对象</title>
  <meta charset="utf-8">
</head>
<body>
<a href="http://www.baidu.com">百度一下</a>
<button type="button" id="open">打开弹出层</button>
<div style="display: none;background: lightblue;border:1px solid green;" id="toast">     <!--   设置display属性为none以隐藏内容       -->
  <p>这里是弹出层内容</p>
  <button type="button" id="close">关闭弹出层</button>
</div>
<script type="text/javascript">
  var toast = document.getElementById("toast");
  document.getElementById("open").onclick = function(e){      <!--  定义点击事件显示隐藏内容     -->
    toast.style.display = "block";
    toast.style.position = "fixed";
    var winWidth = window.innerWidth;
    var winHeight = window.innerHeight;
    var targetWidth = toast.offsetWidth;
    var targetHeight = toast.offsetHeight;
    toast.style.top = (winHeight - targetHeight) / 2 + "px";
    toast.style.left = (winWidth - targetWidth) / 2 + "px";
  }
  document.getElementById("close").onclick = function(e){        <!--   将显示的内容再次隐藏     -->
    toast.style.display = "none";
  }
</script>
</body>
</html>

显示效果如下:

使用JavaScript实现弹出层效果的简单实例

但是我们可以注意到,在弹出隐藏内容之后我们还是可以通过链接进入百度页面。为了防止这种情况的发生,我们可以提供遮罩层将原先的页面内容全部遮住。代码如下:

<!DOCTYPE html>
<html>
<head>
  <title>Window对象</title>
  <meta charset="utf-8">
</head>
<body>
<a href="http://www.baidu.com">百度一下</a>
<button type="button" id="open">打开弹出层</button>
<div id="cover" style="display: none;position: fixed;width: 100%;height: 100%;top:0px;left:0px;background: gray;">    <!-- 通过遮罩层遮住背景 -->
  <div style="background: lightblue;border:1px solid green;" id="toast">     <!-- 设置display属性为none以隐藏内容       -->
  <p>这里是弹出层内容</p>
    <button type="button" id="close">关闭弹出层</button>

</div>
</div>
<script type="text/javascript">
  var toast = document.getElementById("toast");
  var cover = document.getElementById("cover");
  document.getElementById("open").onclick = function(e){      <!--  定义点击事件显示隐藏内容     -->
    cover.style.display = "block";
    toast.style.position = "fixed";
    var winWidth = window.innerWidth;
    var winHeight = window.innerHeight;
    var targetWidth = toast.offsetWidth;
    var targetHeight = toast.offsetHeight;
    toast.style.top = (winHeight - targetHeight) / 2 + "px";
    toast.style.left = (winWidth - targetWidth) / 2 + "px";
  }
  document.getElementById("close").onclick = function(e){        <!--   将显示的内容再次隐藏     -->
    cover.style.display = "none";
  }
</script>
</body>
</html>

这是再次测试下效果,如下图:

使用JavaScript实现弹出层效果的简单实例

总结

上述内容只是简单实现了弹出层效果,但是通过添加更多的代码也可以在此基础上实现更复杂的功能。

以上这篇使用JavaScript实现弹出层效果的简单实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery实现输入框动态增减的实例代码
Jul 14 Javascript
浅析用prototype定义自己的方法
Nov 14 Javascript
js中直接声明一个对象的方法
Aug 10 Javascript
jQuery实现的分子运动小球碰撞效果
Jan 27 Javascript
浅谈DOCTYPE对$(window).height()取值的影响
Jul 21 Javascript
JS提示:Uncaught SyntaxError: Unexpected token ILLEGAL错误的解决方法
Aug 19 Javascript
vue-dialog的弹出层组件
May 25 Javascript
javascript简单写的判断电话号码实例
May 24 Javascript
d3.js实现自定义多y轴折线图的示例代码
May 30 Javascript
vue 双向数据绑定的实现学习之监听器的实现方法
Nov 30 Javascript
JS前端模块化原理与实现方法详解
Mar 17 Javascript
vue axios封装httpjs,接口公用配置拦截操作
Aug 11 Javascript
javascript事件处理模型实例说明
May 31 #Javascript
jQuery基础知识点总结(必看)
May 31 #Javascript
浅谈JavaScript中小数和大整数的精度丢失
May 31 #Javascript
javascript小数精度丢失的完美解决方法
May 31 #Javascript
javascript解决小数的加减乘除精度丢失的方案
May 31 #Javascript
javascript基本语法
May 31 #Javascript
jquery 无限极下拉菜单的简单实例(精简浓缩版)
May 31 #Javascript
You might like
PHP isset()与empty()的使用区别详解
2010/08/29 PHP
php下安装配置fckeditor编辑器的方法
2011/03/02 PHP
php 缩略图实现函数代码
2011/06/23 PHP
php通过数组实现多条件查询实现方法(字符串分割)
2014/05/06 PHP
PHP中的日期时间处理利器实例(Carbon)
2017/06/09 PHP
Yii框架常见缓存应用实例小结
2019/09/09 PHP
jQuery .tmpl(), .template()学习资料小结
2011/07/18 Javascript
javascript中数组的冒泡排序使用示例
2013/12/18 Javascript
jQuery实现带玻璃流光质感的手风琴特效
2015/11/20 Javascript
jquery插件方式实现table查询功能的简单实例
2016/06/06 Javascript
浅谈Node.js轻量级Web框架Express4.x使用指南
2017/05/03 Javascript
angularjs $http实现form表单提交示例
2017/06/09 Javascript
JS实现移动端判断上拉和下滑功能
2017/08/07 Javascript
vue跨域解决方法
2017/10/15 Javascript
JavaScript中的几种继承方法示例
2020/12/06 Javascript
[02:16]DOTA2超级联赛专访Burning 逆袭需要抓住机会
2013/06/24 DOTA
更改Ubuntu默认python版本的两种方法python-&gt; Anaconda
2016/12/18 Python
解决Python的str强转int时遇到的问题
2018/04/09 Python
Python3实现的简单验证码识别功能示例
2018/05/02 Python
python跳过第一行快速读取文件内容的实例
2018/07/12 Python
Python实现将Excel转换成xml的方法示例
2018/08/25 Python
详解css position 5种不同的值的用法
2019/07/30 HTML / CSS
使用css创建三角形 使用CSS3创建3d四面体原理及代码(html5实践)
2013/01/06 HTML / CSS
美国折扣网站:jClub
2017/08/07 全球购物
世界领先的艺术图书出版社:TASCHEN
2018/07/23 全球购物
澳大利亚最受欢迎的美发用品目的地:AMR
2019/08/28 全球购物
校园网站的创业计划书范文
2013/12/30 职场文书
自荐信需注意事项
2014/01/25 职场文书
《影子》教学反思
2014/02/21 职场文书
暖通工程师岗位职责
2014/06/12 职场文书
文员岗位职责
2015/02/04 职场文书
涪陵白鹤梁导游词
2015/02/09 职场文书
护士求职自荐信范文
2015/03/04 职场文书
2015年银行工作总结范文
2015/04/01 职场文书
MySQL 使用索引扫描进行排序
2021/06/20 MySQL
详解MongoDB排序时内存大小限制与创建索引的注意事项
2022/05/06 MongoDB