jQuery实现弹出带遮罩层的居中浮动窗口效果


Posted in Javascript onSeptember 12, 2016

本文实例讲述了jQuery实现弹出带遮罩层的居中浮动窗口效果。分享给大家供大家参考,具体如下:

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>pop window</title>
<style>
*{
  padding: 0;
  margin: 0;
}
.hide{
  display: none;
}
.popWindow{
  width: 300px;
  height: 300px;
  background: #abcdef;
  padding: 2px;
  margin: 10px;
  position: absolute;
  left: 0;
  top: 0;
  z-index: 2;
}
.popWindow h3{
  height: 30px;
  line-height: 30px;
}
.popWindow h3 span{
  float: right;
  font-size: 14px;
  font-weight: normal;
  cursor: pointer;
}
.popWindow h3 span:hover{
  color: #f00;
}
.popWindow .content{
  height: 270px;
  background: #fff;
}
.mask{
  background: #000;
  opacity: 0.4;
  position: absolute;
  left: 0;
  top: 0;
  z-index: 1;
}
</style>
</head>
<body style="width:2000px">
<a href="javascript:;" id="show">显示窗口</a>
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
<div class="popWindow hide">
<h3>弹出窗口的标题<span>关闭</span></h3>
<div class="content">弹出窗口的内容</div>
</div>
<script src="jquery-1.7.2.min.js"></script>
<script>
$(function(){
  var oBtn = $('#show');
  var popWindow = $('.popWindow');
  var oClose = $('.popWindow h3 span');
  //浏览器可视区域的宽度
  var browserWidth = $(window).width();
  //浏览器可视区域的高度
  var browserHeight = $(window).height();
  //浏览器纵向滚动条距离上边界的值
  var browserScrollTop = $(window).scrollTop();
  //浏览器横向滚动条距离左边界的值
  var browserScrollLeft = $(window).scrollLeft();
  //弹出窗口的宽度
  var popWindowWidth = popWindow.outerWidth(true);
  //弹出窗口的高度
  var popWindowHeight = popWindow.outerHeight(true);
  //left的值=浏览器可视区域的宽度/2-弹出窗口的宽度/2+浏览器横向滚动条距离左边界的值
  var positionLeft = browserWidth/2 - popWindowWidth/2+browserScrollLeft;
  //top的值=浏览器可视区域的高度/2-弹出窗口的高度/2+浏览器纵向滚动条距离上边界的值
  var positionTop = browserHeight/2 - popWindowHeight/2+browserScrollTop;
  var oMask = '<div class="mask"></div>'
  //遮照层的宽度
  var maskWidth = $(document).width();
  //遮照层的高度
  var maskHeight = $(document).height();
  oBtn.click(function(){
    popWindow.show().animate({
          'left':positionLeft+'px',
          'top':positionTop+'px'
    },500);
    $('body').append(oMask);
    $('.mask').width(maskWidth).height(maskHeight);
  });
  $(window).resize(function(){
    if(popWindow.is(':visible')){
      browserWidth = $(window).width();
      browserHeight = $(window).height();
      positionLeft = browserWidth/2 - popWindowWidth/2+browserScrollLeft;
      positionTop = browserHeight/2 - popWindowHeight/2+browserScrollTop;
      popWindow.animate({
            'left':positionLeft+'px',
            'top':positionTop+'px'
      },500);
    }
  });
  $(window).scroll(function(){
    if(popWindow.is(':visible')){
      browserScrollTop = $(window).scrollTop();
      browserScrollLeft = $(window).scrollLeft();
      positionLeft = browserWidth/2 - popWindowWidth/2+browserScrollLeft;
      positionTop = browserHeight/2 - popWindowHeight/2+browserScrollTop;
      popWindow.animate({
            'left':positionLeft+'px',
            'top':positionTop+'px'
      },500).dequeue();
    }
  });
  oClose.click(function(){
    popWindow.hide();
    $('.mask').remove();
  });
});
</script>
</body>
</html>

运行效果图如下:

jQuery实现弹出带遮罩层的居中浮动窗口效果

希望本文所述对大家jQuery程序设计有所帮助。

Javascript 相关文章推荐
js post方式传递提交的实现代码
May 31 Javascript
js中复制行和删除行的操作实例
Jun 25 Javascript
现代 JavaScript 开发编程风格Idiomatic.js指南中文版
May 28 Javascript
JavaScript常用脚本汇总(二)
Mar 04 Javascript
javascript实现炫酷的拖动分页
May 11 Javascript
jQuery实现按钮的点击 全选/反选 单选框/复选框 文本框 表单验证
Jun 25 Javascript
JS中使用apply方法通过不同数量的参数调用函数的方法
May 31 Javascript
微信js-sdk上传与下载图片接口用法示例
Oct 12 Javascript
JS实现移动端判断上拉和下滑功能
Aug 07 Javascript
jQuery实现炫丽的3d旋转星空效果
Jul 04 jQuery
vue 将多个过滤器封装到一个文件中的代码详解
Sep 05 Javascript
React如何创建组件
Jun 27 Javascript
jQuery实现的无限级下拉菜单功能示例
Sep 12 #Javascript
jQuery实现的图片轮播效果完整示例
Sep 12 #Javascript
Vue组件BootPage实现简单的分页功能
Sep 12 #Javascript
jQuery实现的多张图无缝滚动效果【测试可用】
Sep 12 #Javascript
初识简单却不失优雅的Vue.js
Sep 12 #Javascript
jQuery实现简单的tab标签页效果
Sep 12 #Javascript
深入探讨Vue.js组件和组件通信
Sep 12 #Javascript
You might like
re0第二季蕾姆被制作组打入冷宫!艾米莉亚女主扶正,原因唏嘘
2020/04/02 日漫
提升PHP速度全攻略
2006/10/09 PHP
深入php 正则表达式的学习探讨
2013/06/06 PHP
php实现查询百度google收录情况(示例代码)
2013/08/02 PHP
php获取指定数量随机字符串的方法
2017/02/06 PHP
PHP对称加密算法(DES/AES)类的实现代码
2017/11/14 PHP
php读取本地json文件的实例
2018/03/07 PHP
Yii框架自定义数据库操作组件示例
2019/11/11 PHP
javascript css float属性的特殊写法
2008/11/13 Javascript
jquery实现居中弹出层代码
2010/08/25 Javascript
简介JavaScript中Math.cos()余弦方法的使用
2015/06/15 Javascript
JQuery标签页效果实例详解
2015/12/24 Javascript
Ionic实现仿通讯录点击滑动及$ionicscrolldelegate使用分析
2016/01/18 Javascript
利用Node.js制作爬取大众点评的爬虫
2016/09/22 Javascript
关于Vue在ie10下空白页的debug小结
2018/05/02 Javascript
Node.js事件的正确使用方法
2019/04/05 Javascript
Vue 技巧之控制父类的 slot
2020/02/24 Javascript
Python中多线程thread与threading的实现方法
2014/08/18 Python
Python re模块介绍
2014/11/30 Python
Python学习教程之常用的内置函数大全
2017/07/14 Python
Python基于xlrd模块操作Excel的方法示例
2018/06/21 Python
python数据结构之线性表的顺序存储结构
2018/09/28 Python
对python多线程与global变量详解
2018/11/09 Python
Python依赖包整体迁移方法详解
2019/08/15 Python
PyQt5 控件字体样式等设置的实现
2020/05/13 Python
Python实现小黑屋游戏的完整实例
2021/01/06 Python
CSS3实战第一波 让我们尽情的圆角吧
2010/08/27 HTML / CSS
奥地利手表、香水、化妆品和珠宝购物网站:Brasty.at
2021/01/17 全球购物
工程部主管岗位职责
2013/11/17 职场文书
幼儿园实习生辞职信
2014/01/20 职场文书
高中生的自我鉴定范文
2014/01/24 职场文书
小学生2014国庆节演讲稿:祖国在我心中
2014/09/21 职场文书
2015年财务部年度工作总结
2015/05/19 职场文书
Redis 异步机制
2022/05/15 Redis
彻底卸载VMware虚拟机的超详细步骤记录
2022/07/15 Servers
Spring boot实现上传文件到本地服务器
2022/08/14 Java/Android