使用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应该怎样学
Apr 16 Javascript
csdn 博客中实现运行代码功能实现
Aug 29 Javascript
11款基于Javascript的文件管理器
Oct 25 Javascript
jquery ajax,ashx,json的用法总结
Feb 12 Javascript
JavaScript代码编写中各种各样的坑和填坑方法
Jun 06 Javascript
2014 HTML5/CSS3热门动画特效TOP10
Dec 07 Javascript
javascript中hasOwnProperty() 方法使用指南
Mar 09 Javascript
jQuery实现Email邮箱地址自动补全功能代码
Nov 03 Javascript
JavaScript File API实现文件上传预览
Feb 02 Javascript
js的三种继承方式详解
Jan 21 Javascript
Javascript实现数组中的元素上下移动
Apr 28 Javascript
JS实现定时任务每隔N秒请求后台setInterval定时和ajax请求问题
Oct 15 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模板引擎SMARTY
2006/10/09 PHP
php下将多个数组合并成一个数组的方法与实例代码
2011/02/03 PHP
实用的PHP带公钥加密类分享(每次加密结果都不一样哦)
2014/08/20 PHP
10个实用的PHP正则表达式汇总
2014/10/23 PHP
javascript数组与php数组的地址传递及值传递用法实例
2015/01/22 PHP
php获取图片信息的方法详解
2015/12/10 PHP
JavaScript RegExp方法获取地址栏参数(面向对象)
2009/03/10 Javascript
锋利的jQuery 第三章章节总结的例子
2010/03/23 Javascript
用Javascript获取页面元素的具体位置
2013/12/09 Javascript
js中flexible.js实现淘宝弹性布局方案
2020/06/23 Javascript
js实现input密码框提示信息的方法(附html5实现方法)
2016/01/14 Javascript
js弹出框、对话框、提示框、弹窗实现方法总结(推荐)
2016/05/31 Javascript
jQuery向webApi提交post json数据
2017/01/16 Javascript
详解VUE2.X过滤器的使用方法
2018/01/11 Javascript
springMvc 前端用json的方式向后台传递对象数组方法
2018/08/07 Javascript
vue.draggable实现表格拖拽排序效果
2018/12/01 Javascript
vue-router传参用法详解
2019/01/19 Javascript
Angular value与ngValue区别详解
2019/11/27 Javascript
[40:48]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第二局
2016/02/28 DOTA
[01:03:27]Optic vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
浅谈django model postgres的json字段编码问题
2018/01/05 Python
终端命令查看TensorFlow版本号及路径的方法
2018/06/13 Python
Python用csv写入文件_消除空余行的方法
2018/07/06 Python
使用django自带的user做外键的方法
2020/11/30 Python
css3的@media属性实现页面响应式布局示例代码
2014/02/10 HTML / CSS
html5使用canvas绘制文字特效
2014/12/15 HTML / CSS
Hoover胡佛官网:美国吸尘器和洗地机品牌
2019/01/09 全球购物
Prototype如何更新局部页面
2013/03/03 面试题
厨师长岗位职责
2014/03/02 职场文书
大学生简历求职信
2014/06/24 职场文书
2014年幼儿园工作总结
2014/11/10 职场文书
母亲节寄语大全
2015/02/27 职场文书
开会通知短信大全
2015/04/20 职场文书
辩论赛主持人开场白
2015/05/29 职场文书
张丽莉事迹观后感
2015/06/16 职场文书
2015年秋季小学开学标语
2015/07/16 职场文书