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 相关文章推荐
jQuery教程 $()包装函数来实现数组元素分页效果
Aug 13 Javascript
jquery使用jquery.zclip插件复制对象的实例教程
Dec 04 Javascript
改变隐藏的input中value值的方法
Mar 19 Javascript
jQuery选择器之基本选择器与层次选择器
Mar 03 Javascript
canvas实现手机端用来上传用户头像的代码
Oct 20 Javascript
Bootstrap CSS组件之输入框组
Dec 17 Javascript
解析ajaxFileUpload 异步上传文件简单使用
Dec 30 Javascript
原生javascript上传图片带进度条【实例分享】
Apr 06 Javascript
webpack+vue2构建vue项目骨架的方法
Jan 09 Javascript
详解vue-admin和后端(flask)分离结合的例子
Feb 12 Javascript
详解处理bootstrap4不支持远程静态框问题
Jul 20 Javascript
写给新手同学的vuex快速上手指北小结
Apr 14 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
xml+php动态载入与分页
2006/10/09 PHP
PHP中动态HTML的输出技术
2006/10/09 PHP
php缓存技术详细总结
2013/08/07 PHP
排序算法之PHP版快速排序、冒泡排序
2014/04/09 PHP
ThinkPHP的模版中调用session数据的方法
2014/07/01 PHP
YII模块实现绑定二级域名的方法
2014/07/09 PHP
THINKPHP项目开发中的日志记录实例分析
2014/12/01 PHP
php正则preg_replace_callback函数用法实例
2015/06/01 PHP
PHP MSSQL 分页实例
2016/04/13 PHP
php原生导出excel文件的两种方法(推荐)
2016/11/19 PHP
utf-8编码引起js输出中文乱码的解决办法
2010/06/23 Javascript
使用Js让Html中特殊字符不被转义
2013/11/05 Javascript
js实现在字符串中提取数字
2013/11/05 Javascript
IE浏览器中图片onload事件无效的解决方法
2014/04/29 Javascript
extjs_02_grid显示本地数据、显示跨域数据
2014/06/23 Javascript
JQuery标签页效果实例详解
2015/12/24 Javascript
angular学习之ngRoute路由机制
2017/04/12 Javascript
lhgcalendar时间插件限制只能选择三个月的实现方法
2017/07/03 Javascript
JavaScript深拷贝和浅拷贝概念与用法实例分析
2018/06/07 Javascript
jQuery实现获取当前鼠标位置并输出功能示例
2019/01/05 jQuery
小程序分页实践之编写可复用分页组件
2019/07/18 Javascript
layui的布局和表格的渲染以及动态生成表格的方法
2019/09/18 Javascript
js实现网页版贪吃蛇游戏
2020/02/22 Javascript
python去掉空白行的多种实现代码
2018/03/19 Python
Python向excel中写入数据的方法
2019/05/05 Python
python单向循环链表原理与实现方法示例
2019/12/03 Python
在pycharm创建scrapy项目的实现步骤
2020/12/01 Python
耐克波兰官方网站:Nike波兰
2019/09/03 全球购物
记者岗位职责
2014/01/06 职场文书
幼儿园门卫制度
2014/01/29 职场文书
2014年三八妇女节活动总结
2014/03/01 职场文书
竞选文艺委员演讲稿
2014/04/28 职场文书
主题实践活动总结
2014/05/08 职场文书
数控机床专业自荐信
2014/05/19 职场文书
新闻稿怎么写
2015/07/18 职场文书
2019年幼儿园家长接送责任书
2019/10/29 职场文书