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中几种去掉字串左右空格的方法
Dec 25 Javascript
Firebug 字幕文件JSON地址获取代码
Oct 28 Javascript
在jQuery中 关于json空对象筛选替换
Apr 15 Javascript
跟我学习javascript的prototype,getPrototypeOf和__proto__
Nov 17 Javascript
jQuery中inArray方法注意事项分析
Jan 25 Javascript
MUI 上拉刷新/下拉加载功能实例代码
Apr 13 Javascript
详解angular笔记路由之angular-router
Sep 12 Javascript
使用Vue.js开发微信小程序开源框架mpvue解析
Mar 20 Javascript
VUE安装使用教程详解
Jun 03 Javascript
vue项目中将element-ui table表格写成组件的实现代码
Jun 12 Javascript
使用layer模态框给新页面传值的方法
Sep 27 Javascript
整理 node-sass 安装失败的原因及解决办法(小结)
Feb 19 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
php self,$this,const,static,-&amp;gt;的使用
2009/10/22 PHP
Bootstrap+PHP实现多图上传功能实例详解
2018/04/08 PHP
MooBox 基于Mootools的对话框插件
2012/01/20 Javascript
JS多物体 任意值 链式 缓冲运动
2012/08/10 Javascript
如何使用jquery动态加载js,css文件实现代码
2013/04/03 Javascript
JAVASCRIPT模式窗口中下载文件无法接收iframe的流
2013/10/11 Javascript
js中小数转换整数的方法
2014/01/26 Javascript
Vuejs第十三篇之组件——杂项
2016/09/09 Javascript
浅谈JS之tagNaem和nodeName
2016/09/13 Javascript
IntersectionObserver API 详解篇
2016/12/11 Javascript
jQuery实现两列等高并自适应高度
2016/12/22 Javascript
jQuery模拟下拉框选择对应菜单的内容
2017/03/07 Javascript
Vue.js实现在下拉列表区域外点击即可关闭下拉列表的功能(自定义下拉列表)
2017/05/30 Javascript
微信小程序使用Socket的实例
2017/09/19 Javascript
浅谈js的解析顺序 作用域 严格模式
2017/10/23 Javascript
详解vue-cli项目中用json-sever搭建mock服务器
2017/11/02 Javascript
webpack 静态资源集中输出的方法示例
2018/11/09 Javascript
详解基于element的区间选择组件校验(交易金额)
2021/01/07 Javascript
vue实现禁止浏览器记住密码功能的示例代码
2021/02/03 Vue.js
浅析Python多线程下的变量问题
2015/04/28 Python
浅谈Python的Django框架中的缓存控制
2015/07/24 Python
总结用Pdb库调试Python的方式及常用的命令
2016/08/18 Python
python在线编译器的简单原理及简单实现代码
2018/02/02 Python
Sanic框架请求与响应实例分析
2018/07/16 Python
python分批定量读取文件内容,输出到不同文件中的方法
2018/12/08 Python
解决python中import文件夹下面py文件报错问题
2020/06/01 Python
Python如何绘制日历图和热力图
2020/08/07 Python
PyCharm 2020.2 安装详细教程
2020/09/25 Python
Html5实现如何在两个div元素之间拖放图像
2013/03/29 HTML / CSS
最便宜促销价格订机票:Airpaz(总部设在印尼,支持中文)
2018/11/13 全球购物
大学总结自我鉴定
2014/01/18 职场文书
社会实践感言
2014/01/25 职场文书
在校学生证明格式
2015/06/24 职场文书
2015党建工作简报
2015/07/21 职场文书
Python查找算法的实现 (线性、二分,分块、插值查找算法)
2022/04/24 Python
字节飞书面试promise.all实现示例
2022/06/16 Javascript