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 参数传递的实际应用代码分析
Sep 13 Javascript
JavaScript数组常用操作技巧汇总
Nov 17 Javascript
jquery计算鼠标和指定元素之间距离的方法
Jun 26 Javascript
jQuery的ajax下载blob文件
Jul 21 Javascript
jQuery实现的放大镜效果示例
Sep 13 Javascript
JavaScript监听手机物理返回键的两种解决方法
Aug 14 Javascript
基于JavaScript实现前端数据多条件筛选功能
Aug 19 Javascript
JS的函数调用栈stack size的计算方法
Jun 24 Javascript
vue移动端屏幕适配详解
Apr 30 Javascript
vue通过v-html指令渲染的富文本无法修改样式的解决方案
May 20 Javascript
vue实现分页的三种效果
Jun 23 Javascript
js作用域及作用域链工作引擎
Jul 07 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
UTF8编码内的繁简转换的PHP类
2009/07/09 PHP
php 攻击方法之谈php+mysql注射语句构造
2009/10/30 PHP
PHP操作数组的一些函数整理介绍
2011/07/17 PHP
Yii 快速,安全,专业的PHP框架
2014/09/03 PHP
PHP的HTTP客户端Guzzle简单使用方法分析
2019/10/30 PHP
PHP实现基本留言板功能原理与步骤详解
2020/03/26 PHP
Thinkphp 框架基础之入口文件功能、定义与用法分析
2020/04/27 PHP
怎么用javascript进行拖拽
2006/07/20 Javascript
学习YUI.Ext 第六天--关于树TreePanel(Part 2异步获取节点)
2007/03/10 Javascript
JQuery下关于$.Ready()的分析
2009/12/13 Javascript
JavaScript之Getters和Setters 平台支持等详细介绍
2012/12/07 Javascript
用jQuery实现的智能隐藏、滑动效果的返回顶部代码
2014/03/18 Javascript
jQuery搜索子元素的方法
2015/02/10 Javascript
学习JavaScript设计模式(链式调用)
2015/11/26 Javascript
JavaScript的instanceof运算符学习教程
2016/06/08 Javascript
Bootstrap导航条鼠标悬停下拉菜单
2017/01/04 Javascript
关于Ajax的原理以及代码封装详解
2017/09/08 Javascript
使用Angular material主题定义自己的组件库的配色体系
2019/09/04 Javascript
vue样式穿透 ::v-deep的具体使用
2020/06/04 Javascript
Angular利用HTTP POST下载流文件的步骤记录
2020/07/26 Javascript
Vue使用轮询定时发送请求代码
2020/08/10 Javascript
vuex页面刷新导致数据丢失的解决方案
2020/12/10 Vue.js
[48:20]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python中Django框架下的staticfiles使用简介
2015/05/30 Python
解决Shell执行python文件,传参空格引起的问题
2018/10/30 Python
python如何实现异步调用函数执行
2019/07/08 Python
Python FtpLib模块应用操作详解
2019/12/12 Python
浅谈python元素如何去重,去重后如何保持原来元素的顺序不变
2020/02/28 Python
详解HTML5中的picture元素响应式处理图片
2018/01/03 HTML / CSS
财务会计专业毕业生自荐信
2013/10/02 职场文书
广告设计专业自荐信范文
2013/11/14 职场文书
工商管理系学生的自我评价分享
2013/11/29 职场文书
应届毕业生个人自荐信范文
2013/11/30 职场文书
舞蹈兴趣小组活动总结
2014/07/07 职场文书
2016入党培训心得体会范文
2016/01/08 职场文书
Python3 如何开启自带http服务
2021/05/18 Python