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 相关文章推荐
分析 JavaScript 中令人困惑的变量赋值
Aug 13 Javascript
jQuery.extend 函数的详细用法
Jun 27 Javascript
js+div实现图片滚动效果代码
Feb 10 Javascript
JS自调用匿名函数具体实现
Feb 11 Javascript
开源的javascript项目Kissy介绍
Nov 28 Javascript
node.js集成百度UE编辑器
Feb 05 Javascript
JavaScript获取页面中第一个锚定文本的方法
Apr 03 Javascript
js 用于检测类数组对象的函数方法
May 02 Javascript
Vue组件通信之Bus的具体使用
Dec 28 Javascript
vue+echarts实现动态绘制图表及异步加载数据的方法
Oct 17 Javascript
关于React动态加载路由处理的相关问题
Jan 07 Javascript
vue 需求 data中的数据之间的调用操作
Aug 05 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
星际争霸教主Flash的ID由来:你永远不会知道他之前的ID是www!
2019/01/18 星际争霸
基于curl数据采集之正则处理函数get_matches的使用
2013/04/28 PHP
PHP小教程之实现链表
2014/06/09 PHP
PHP设计模式之工厂模式(Factory Pattern)的讲解
2019/03/21 PHP
Yii Framework框架使用PHPExcel组件的方法示例
2019/07/24 PHP
Yii redis集合的基本使用教程
2020/06/14 PHP
PHP执行linux命令6个函数代码实例
2020/11/24 PHP
JavaScript DOM 添加事件
2009/02/14 Javascript
游览器中javascript的执行过程(图文)
2012/05/20 Javascript
提交表单时执行func方法实现代码
2013/03/17 Javascript
一个css与js结合的下拉菜单支持主流浏览器
2014/10/08 Javascript
WordPress中利用AJAX异步获取评论用户头像的方法
2016/01/08 Javascript
一些实用性较高的js方法
2016/04/19 Javascript
深入理解node exports和module.exports区别
2016/06/01 Javascript
AngularJS基础 ng-mouseleave 指令详解
2016/08/02 Javascript
使用bootstrap实现多窗口和拖动效果
2016/09/22 Javascript
JavaScript轻松创建级联函数的方法示例
2017/02/10 Javascript
JS查找英文文章中出现频率最高的单词
2017/03/20 Javascript
JavaScript中Array方法你该知道的正确打开方法
2018/09/11 Javascript
ES6 Generator函数的应用实例分析
2019/06/26 Javascript
利用Python学习RabbitMQ消息队列
2015/11/30 Python
pip install urllib2不能安装的解决方法
2018/06/12 Python
正确理解Python中if __name__ == '__main__'
2019/01/24 Python
Django中URL的参数传递的实现
2019/08/04 Python
详解如何在pyqt中通过OpenCV实现对窗口的透视变换
2020/09/20 Python
canvas学习和滤镜实现代码
2018/08/22 HTML / CSS
澳大利亚足球鞋和服装购物网站:Ultra Football
2018/10/11 全球购物
汽车技术服务与营销专业推荐信
2013/11/29 职场文书
心理健康教育心得体会
2013/12/29 职场文书
我的大学生活职业生涯规划
2014/01/02 职场文书
公司副总经理岗位职责
2014/10/01 职场文书
个人租房协议书
2014/11/28 职场文书
开除员工通知
2015/04/22 职场文书
springboot中一些比较常用的注解总结
2021/06/11 Java/Android
解决SpringBoot跨域的三种方式
2021/06/26 Java/Android
Nginx配置文件详解以及优化建议指南
2021/09/15 Servers