使用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 相关文章推荐
javascript TextArea动态显示剩余字符
Oct 22 Javascript
js跟随滚动条滚动浮动代码
Dec 31 Javascript
firebug的一个有趣现象介绍
Nov 30 Javascript
Jquery利用mouseenter和mouseleave实现鼠标经过弹出层且可以点击
Feb 12 Javascript
简介JavaScript中valueOf()方法的使用
Jun 05 Javascript
JavaScript对数组进行随机重排的方法
Jul 22 Javascript
利用jquery制作滚动到指定位置触发动画
Mar 26 Javascript
Node.js 实现简单小说爬虫实例
Nov 18 Javascript
jquery广告无缝轮播实例
Jan 05 Javascript
JavaScript实现body内任意节点的自定义属性功能示例
Sep 18 Javascript
基于vue.js中关于下拉框的值默认及绑定问题
Aug 22 Javascript
JS 音频可视化插件Wavesurfer.js的使用教程
Oct 31 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绝对路径与相对路径之间关系的的分析
2010/03/03 PHP
PHP内核探索:变量概述
2014/01/30 PHP
php时间戳转换的示例
2014/03/31 PHP
JS+PHP实现用户输入数字后显示最大的值及所在位置
2017/06/19 PHP
javascript void(0)的妙用
2009/10/21 Javascript
基于jquery的地址栏射击游戏代码
2011/03/10 Javascript
JavaScript中访问节点对象的方法有哪些如何使用
2013/09/24 Javascript
DOM基础教程之模型中的模型节点
2015/01/19 Javascript
JS的框架Polymer中的dom-if和is属性使用说明
2015/07/29 Javascript
解析浏览器端的AJAX缓存机制
2016/06/21 Javascript
简洁实用的BootStrap jQuery手风琴插件
2016/08/31 Javascript
进阶之初探nodeJS
2017/01/24 NodeJs
详谈angularjs中路由页面强制更新的问题
2017/04/24 Javascript
JavaScript实现学生在线做题计时器功能
2018/12/05 Javascript
NodeJs 模仿SIP话机注册的方法
2019/06/21 NodeJs
[01:30]2016国际邀请赛中国区预选赛神秘商店火爆开启
2016/06/26 DOTA
浅谈python中的正则表达式(re模块)
2017/10/17 Python
OpenCV2.3.1+Python2.7.3+Numpy等的配置解析
2018/01/05 Python
Python进阶之@property动态属性的实现
2019/04/01 Python
PyQt5 实现给窗口设置背景图片的方法
2019/06/13 Python
python opencv把一张图片嵌入(叠加)到另一张图片上的实现代码
2020/06/11 Python
Python爬取微信小程序Charles实现过程图解
2020/09/29 Python
Python内置函数及功能简介汇总
2020/10/13 Python
Lands’ End官网:经典的美国生活方式品牌
2016/08/14 全球购物
世界上第一个水枕头:Mediflow
2018/12/06 全球购物
大码女装:Ulla Popken
2019/08/06 全球购物
俄罗斯运动、健康和美容产品在线商店:Lactomin.ru
2020/07/23 全球购物
汽车检测与维修个人求职信
2013/09/24 职场文书
机修工岗位职责
2013/11/24 职场文书
单位介绍信范文
2014/01/18 职场文书
幼儿园中班教师寄语
2014/04/03 职场文书
致800米运动员广播稿(10篇)
2014/10/17 职场文书
从严治党主题教育活动总结
2015/05/07 职场文书
创业计划书之服装
2019/10/07 职场文书
Java生成日期时间存入Mysql数据库的实现方法
2022/03/03 Java/Android
关于python3 opencv 图像二值化的问题(cv2.adaptiveThreshold函数)
2022/04/04 Python