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 相关文章推荐
Web版彷 Visual Studio 2003 颜色选择器
Jan 09 Javascript
基于jquery的一个拖拽到指定区域内的效果
Sep 21 Javascript
jquery实现的3D旋转木马特效代码分享
Aug 25 Javascript
JavaScript学习笔记整理之引用类型
Jan 22 Javascript
原生js实现简单的焦点图效果实例
Dec 14 Javascript
jQuery进阶实践之利用最优雅的方式如何写ajax请求
Dec 20 jQuery
vue 多入口文件搭建 vue多页面搭建的实例讲解
Mar 12 Javascript
vue弹窗组件使用方法
Apr 28 Javascript
浅谈webpack 构建性能优化策略小结
Jun 13 Javascript
vue插件draggable实现拖拽移动图片顺序
Dec 01 Javascript
JQuery实现ajax请求的示例和注意事项
Dec 10 jQuery
详解微信小程序文件下载--视频和图片
Apr 24 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开发中的tips(必看篇)
2017/03/24 PHP
PHP高并发和大流量解决方案整理
2019/12/24 PHP
javawscript 三级菜单的实现原理
2009/07/01 Javascript
传智播客学习之JavaScript基础篇
2009/11/13 Javascript
jquery表格内容筛选实现思路及代码
2013/04/16 Javascript
深入document.write()与HTML4.01的非成对标签的详解
2013/05/08 Javascript
JS保留两位小数,多位小数的示例代码
2014/01/07 Javascript
js获取当前路径的简单示例代码
2014/01/08 Javascript
巧用replace将文字表情替换为图片
2014/04/17 Javascript
JS实现自动固定顶部的悬浮菜单栏效果
2015/09/16 Javascript
jquery分隔Url的param方法(推荐)
2016/05/25 Javascript
ajax实现动态下拉框示例
2017/01/10 Javascript
[原创]SyntaxHighlighter自动识别并加载脚本语言
2017/02/07 Javascript
vue组件间通信解析
2017/03/01 Javascript
基于JavaScript实现移动端无限加载分页
2017/03/27 Javascript
JS实现导出Excel的五种方法详解【附源码下载】
2018/03/15 Javascript
详解关于Vue单元测试的几个坑
2020/04/26 Javascript
jQuery实现朋友圈查看图片
2020/09/11 jQuery
[41:08]2014 DOTA2国际邀请赛中国区预选赛 HGT VS NE
2014/05/22 DOTA
python实现sublime3的less编译插件示例
2014/04/27 Python
python网络编程学习笔记(九):数据库客户端 DB-API
2014/06/09 Python
python调用机器喇叭发出蜂鸣声(Beep)的方法
2015/03/23 Python
python 定时修改数据库的示例代码
2018/04/08 Python
Python模拟百度自动输入搜索功能的实例
2019/02/14 Python
利用Python计算KS的实例详解
2020/03/03 Python
解决windows上安装tensorflow时报错,“DLL load failed: 找不到指定的模块”的问题
2020/05/20 Python
详解python日志输出使用配置文件格式
2021/02/10 Python
详解rem 适配布局
2018/10/31 HTML / CSS
Stio官网:男女、儿童户外服装
2019/12/13 全球购物
《狐假虎威》教学反思
2014/02/07 职场文书
幼儿园家长评语大全
2014/04/16 职场文书
家属答谢词
2015/01/05 职场文书
联村联户简报
2015/07/21 职场文书
如何用PHP实现分布算法之一致性哈希算法
2021/05/26 PHP
python 爬取吉首大学网站成绩单
2021/06/02 Python
pycharm安装深度学习pytorch的d2l包失败问题解决
2022/03/25 Python