使用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 相关文章推荐
node.js中的require使用详解
Dec 15 Javascript
JQuery遍历元素的后代和同胞实现方法
Sep 18 Javascript
不间断循环滚动效果的实例代码(必看篇)
Oct 08 Javascript
基于JavaScript实现焦点图轮播效果
Mar 27 Javascript
jQuery UI 实例讲解 - 日期选择器(Datepicker)
Sep 18 jQuery
Vue 按键修饰符处理事件的方法
May 04 Javascript
微信小程序实现商品属性联动选择
Feb 15 Javascript
基于vue框架手写一个notify插件实现通知功能的方法
Mar 31 Javascript
Vue项目总结之webpack常规打包优化方案
Jun 06 Javascript
JS访问对象两种方式区别解析
Aug 29 Javascript
全面解析Vue中的$nextTick
Dec 24 Vue.js
学习 Vue.js 遇到的那些坑
Feb 02 Vue.js
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 json_decode函数详细解析
2014/02/17 PHP
深入理解php printf() 输出格式化的字符串
2016/05/23 PHP
PHP MySql增删改查的简单实例
2016/06/21 PHP
Laravel框架控制器,视图及模型操作图文详解
2019/12/04 PHP
js下获取div中的数据的原理分析
2010/04/07 Javascript
JavaScript 面向对象编程(2) 定义类
2010/05/18 Javascript
使用Jquery Aajx访问WCF服务(GET、POST、PUT、DELETE)
2012/03/16 Javascript
利用NodeJS和PhantomJS抓取网站页面信息以及网站截图
2013/11/18 NodeJs
js实现跨域的方法实例详解
2015/06/24 Javascript
AngularJS基础 ng-disabled 指令详解及简单示例
2016/08/01 Javascript
AngularJS表单详解及示例代码
2016/08/17 Javascript
基于JS+Canves实现点击按钮水波纹效果
2016/09/15 Javascript
基于jQuery实现的打字机效果
2017/01/16 Javascript
canvas 实现中国象棋
2017/02/17 Javascript
自制简易打赏功能的实例
2017/09/02 Javascript
最后说说Vue2 SSR 的 Cookies 问题
2018/05/25 Javascript
js嵌套的数组扁平化:将多维数组变成一维数组以及push()与concat()区别的讲解
2019/01/19 Javascript
layui table 多行删除(id获取)的方法
2019/09/12 Javascript
JavaScript中的null和undefined用法解析
2019/09/30 Javascript
Windows上node.js的多版本管理工具用法实例分析
2019/11/06 Javascript
VUE动态生成word的实现
2020/07/26 Javascript
[06:48]DOTA2-DPC中国联赛2月26日Recap集锦
2021/03/11 DOTA
Python实现从url中提取域名的几种方法
2014/09/26 Python
在Python中使用模块的教程
2015/04/27 Python
python实现发送和获取手机短信验证码
2016/01/15 Python
Python全局变量用法实例分析
2016/07/19 Python
Python实现读取Properties配置文件的方法
2018/03/29 Python
python用fsolve、leastsq对非线性方程组求解
2018/12/15 Python
python利用Opencv实现人脸识别功能
2019/04/25 Python
python flask 如何修改默认端口号的方法步骤
2019/07/12 Python
Python提取视频中图片的示例(按帧、按秒)
2020/10/22 Python
实习生的自我评价
2014/01/08 职场文书
家长通知书家长评语
2014/04/17 职场文书
学习雷锋标语
2014/06/25 职场文书
保密工作整改情况汇报
2014/11/06 职场文书
自我推荐信格式模板
2015/03/24 职场文书