使用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 URL参数读取改进版
Jan 16 Javascript
javascript权威指南 学习笔记之javascript数据类型
Sep 24 Javascript
javascript自适应宽度的瀑布流实现思路
Feb 20 Javascript
Angularjs的ng-repeat中去除重复数据的方法
Aug 05 Javascript
JS实现搜索框文字可删除功能
Dec 28 Javascript
js实现文件上传功能 后台使用MultipartFile
Sep 08 Javascript
解决betterScroll在vue中存在图片时,出现拉不动的问题
Sep 27 Javascript
webpack-url-loader 解决项目中图片打包路径问题
Feb 15 Javascript
bootstrap-table formatter 使用vue组件的方法
May 09 Javascript
vue实现前台列表数据过滤搜索、分页效果
May 28 Javascript
微信小程序拼接图片链接无底洞深入探究
Sep 03 Javascript
JavaScript实现图片放大预览效果
Nov 02 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去除换行符的方法小结(PHP_EOL变量的使用)
2013/02/16 PHP
PHP 常用的header头部定义汇总
2015/06/19 PHP
php数字运算验证码的实现代码
2015/07/30 PHP
PHP实现支持加盐的图片加密解密
2016/09/09 PHP
juqery 学习之四 筛选查找
2010/11/30 Javascript
js读写json文件实例代码
2014/10/21 Javascript
深入理解JavaScript系列(22):S.O.L.I.D五大原则之依赖倒置原则DIP详解
2015/03/05 Javascript
JavaScript中switch语句的用法详解
2015/06/03 Javascript
Javascript简单改变表单元素背景的方法
2015/07/15 Javascript
JavaScript数据库TaffyDB用法实例分析
2015/07/27 Javascript
JavaScript的面向对象编程基础
2015/08/13 Javascript
jQuery+CSS实现滑动的标签分栏切换效果
2015/12/17 Javascript
100多个基础常用JS函数和语法集合大全
2017/02/16 Javascript
Vue.2.0.5过渡效果使用技巧
2017/03/16 Javascript
微信小程序时间选择插件使用详解
2018/12/28 Javascript
详解微信图片防盗链“此图片来自微信公众平台 未经允许不得引用”的解决方案
2019/04/04 Javascript
Nuxt配置Element-UI按需引入的操作方法
2020/07/06 Javascript
[01:33]DOTA2上海特级锦标赛 LIQUID战队完整宣传片
2016/03/16 DOTA
Python中使用tarfile压缩、解压tar归档文件示例
2015/04/05 Python
Django内容增加富文本功能的实例
2017/10/17 Python
OpenCV-Python实现轮廓检测实例分析
2018/01/05 Python
推荐10款最受Python开发者欢迎的Python IDE
2018/09/16 Python
对python for 文件指定行读写操作详解
2018/12/29 Python
python实现简单成绩录入系统
2019/09/19 Python
wxpython绘制音频效果
2019/11/18 Python
python实现输入的数据在地图上生成热力图效果
2019/12/06 Python
python调用c++返回带成员指针的类指针实例
2019/12/12 Python
django处理select下拉表单实例(从model到前端到post到form)
2020/03/13 Python
Python-for循环的内部机制
2020/06/12 Python
Python制作数据预测集成工具(值得收藏)
2020/08/21 Python
设计模式的基本要素是什么
2014/04/21 面试题
网友共享的几个面试题关于Java和Unix等方面的
2016/09/08 面试题
教师的实习鉴定
2013/12/15 职场文书
应届毕业生如何写求职信
2014/02/16 职场文书
征求意见函
2015/06/05 职场文书
【DOTA2】半决赛强强对话~ PSG LGD vs EHOME - DPC 2022 CN REGIONAL FINALS WINTER
2022/04/02 DOTA