jQuery实现的模拟弹出窗口功能示例


Posted in Javascript onNovember 24, 2016

本文实例讲述了jQuery实现的模拟弹出窗口功能。分享给大家供大家参考,具体如下:

//初始化文档
$(document).ready();
//----------------弹出DIV仿模态窗口开始----------------
var divW;  //DIV宽度
var divH;  //DIV高度
var clientH;  //浏览器高度
var clientW;  //浏览器宽度
var divTitle;  //DIV标题
var pageUrl;  //DIV中加载的页面
var div_X;  //DIV横坐标
var div_Y;  //DIV纵坐标
function DivWindowOpen(divWidth,divHeight,title,url){
  divW = divWidth;  //DIV宽度
  divH = divHeight;  //DIV高度
  divTitle = title;  //DIV高度
  pageUrl = url;  //DIV中加载的页面UR
  lockScreen();  //锁定背景
  divOpen();
  $("#divTitle").append(divTitle);
  $("#divContent").load(pageUrl);
  //交换X图片
  $("#x").hover(
    function(){
      $(this).attr("src","images/Close-2.gif");
    },
    function(){
      $(this).attr("src","images/Close-1.gif");
    }
  );
  //关闭DIV窗口
  $("#x").click(
    function(){
      clearDivWindow();
      clearLockScreen();
    }
  );
}
//返回弹出的DIV的坐标
function divOpen(){
  var minTop = 80;  //弹出的DIV记顶部的最小距离
  if($("#divWindow").length == 0){
    clientH = $(window).height();  //浏览器高度
    clientW = $(window).width();  //浏览器宽度
    div_X = (clientW - divW)/2;  //DIV横坐标
    div_Y = (clientH - divH)/2;  //DIV纵坐标
    div_X += window.document.documentElement.scrollLeft;  //DIV显示的实际横坐标
    div_Y += window.document.documentElement.scrollTop;  //DIV显示的实际纵坐标
    if(div_Y < minTop){
      div_Y = minTop;
    }
    $("body").append("<div id='divWindow'><div id='divTitle'><img src='images/Close-1.gif' id='x' /></div><div id='divContent'>载入中</div></div>");  //增加DIV
    //divWindow的样式
    $("#divWindow").css("position","absolute");
    $("#divWindow").css("z-index","200");
    $("#divWindow").css("left",(div_X + "px"));  //定位DIV的横坐标
    $("#divWindow").css("top",(div_Y + "px"));  //定位DIV的纵坐标
    $("#divWindow").css("opacity","0.9");
    $("#divWindow").width(divW);
    $("#divWindow").height(divH);
    $("#divWindow").css("background-color","#FFFFFF");
    $("#divWindow").css("border","solid 1px #333333");
    //divTitle的样式
    $("#divTitle").css("height","20px");
    $("#divTitle").css("line-height","20px");
    $("#divTitle").css("background-color","#333333");
    $("#divTitle").css("padding","3px 5px 1px 5px");
    $("#divTitle").css("color","#FFFFFF");
    $("#divTitle").css("font-weight","bold");
    //x的样式
    $("#x").css("float","right");
    $("#x").css("cursor","pointer");
    //divContent的样式
    $("#divContent").css("padding","10px");
  }
  else{
    clientH = $(window).height();  //浏览器高度
    clientW = $(window).width();  //浏览器宽度
    div_X = (clientW - divW)/2;  //DIV横坐标
    div_Y = (clientH - divH)/2;  //DIV纵坐标
    div_X += window.document.documentElement.scrollLeft;  //DIV显示的实际横坐标
    div_Y += window.document.documentElement.scrollTop;  //DIV显示的实际纵坐标
    if(div_Y < minTop){
      div_Y = minTop;
    }
    $("#divWindow").css("left",(div_X + "px"));  //定位DIV的横坐标
    $("#divWindow").css("top",(div_Y + "px"));  //定位DIV的纵坐标
  }
}
//锁定背景屏幕
function lockScreen(){
  if($("#divLock").length == 0){  //判断DIV是否存在
    clientH = $(window).height();  //浏览器高度
    clientW = $(window).width();  //浏览器宽度
    //var docH = $("body").height();  //网页高度
    //var docW = $("body").width();  //网页宽度
    //var bgW = clientW > docW ? clientW : docW;  //取有效宽
    //var bgH = clientH > docH ? clientH : docH;  //取有效高
    $("body").append("<div id='divLock'></div>")  //增加DIV
    $("#divLock").height(clientH);
    $("#divLock").width(clientW);
    $("#divLock").css("display","block");
    $("#divLock").css("background-color","#000000");
    $("#divLock").css("position","fixed");
    $("#divLock").css("z-index","100");
    $("#divLock").css("top","0px");
    $("#divLock").css("left","0px");
    $("#divLock").css("opacity","0.5");
  }
  else{
    clientH = $(window).height();  //浏览器高度
    clientW = $(window).width();  //浏览器宽度
    $("#divLock").height(clientH);
    $("#divLock").width(clientW);
  }
}
//清除背景锁定
function clearLockScreen(){
  $("#divLock").remove();
}
//清除DIV窗口
function clearDivWindow(){
  $("#divWindow").remove();
}
//窗口大小改变时
$(window).resize(
    function(){
      if($("#divLock").length != 0){
        lockScreen();
      }
      if($("#divWindow").length != 0){
        divOpen();
      }
    }
);
//----------------弹出DIV仿模态窗口结束----------------
//改变风格
function ChangeStyle(styleName){
  skinName = styleName;
  //SetCookie("Skin", skinName);
  alert(styleName);
  window.location.reload();
}

希望本文所述对大家jQuery程序设计有所帮助。

Javascript 相关文章推荐
js函数般调用正则
Apr 08 Javascript
javascript生成随机数的方法
May 16 Javascript
JavaScript实现信用卡校验方法
Apr 07 Javascript
jQuery替换textarea中换行的方法
Jun 10 Javascript
java中String类型变量的赋值问题介绍
Mar 23 Javascript
论Bootstrap3和Foundation5网格系统的异同
May 16 Javascript
vue如何实现observer和watcher源码解析
Mar 09 Javascript
js CSS3实现卡牌旋转切换效果
Jul 04 Javascript
基于easyui checkbox 的一些操作处理方法
Jul 10 Javascript
vue实现购物车小案例
Sep 27 Javascript
详解Angular cli配置过程记录
Nov 07 Javascript
详解Vue串联过滤器的使用场景
Apr 30 Javascript
基于JavaScript实现Tab选项卡切换效果
Nov 24 #Javascript
javascript实现获取图片大小及图片等比缩放的方法
Nov 24 #Javascript
网站发布后Bootstrap框架引用woff字体无法正常显示的解决方法
Nov 24 #Javascript
Javascript 数组去重的方法(四种)详解及实例代码
Nov 24 #Javascript
BootStrap树状图显示功能
Nov 24 #Javascript
Bootstrop实现多级下拉菜单功能
Nov 24 #Javascript
AngularJS自定义服务与fliter的混合使用
Nov 24 #Javascript
You might like
如何从一个php文件向另一个地址post数据,不用表单和隐藏的变量的
2007/03/06 PHP
简单解决新浪SAE无法上传文件的问题
2015/05/13 PHP
PHP常见漏洞攻击分析
2016/02/21 PHP
php文件类型MIME对照表(比较全)
2016/10/07 PHP
PHP查找一列有序数组是否包含某值的方法
2020/02/07 PHP
jQuery选择没有colspan属性的td的代码
2010/07/06 Javascript
JavaScript日历实现代码
2010/09/12 Javascript
js数组操作方法总结(必看篇)
2016/11/22 Javascript
Bootstrap响应式导航由768px变成992px的实现代码
2017/06/15 Javascript
深入理解Node.js中通用基础设计模式
2017/09/19 Javascript
Node.js上传文件功能之服务端如何获取文件上传进度
2018/02/05 Javascript
vue自定义键盘信息、监听数据变化的方法示例【基于vm.$watch】
2019/03/16 Javascript
微信小程序与webview交互实现支付功能
2019/06/07 Javascript
在vue中使用inheritAttrs实现组件的扩展性介绍
2020/12/07 Vue.js
[05:56]第十六期——新进3大C之小兔基
2014/06/24 DOTA
[03:48]显微镜下的DOTA2第四期——TP动作
2014/06/20 DOTA
pygame加载中文名mp3文件出现error
2017/03/31 Python
深入理解Python中range和xrange的区别
2017/11/26 Python
Python实现计算圆周率π的值到任意位的方法示例
2018/05/08 Python
Sanic框架基于类的视图用法示例
2018/07/18 Python
Python实现爬取马云的微博功能示例
2019/02/16 Python
Python循环结构的应用场景详解
2019/07/11 Python
Pycharm debug调试时带参数过程解析
2020/02/03 Python
Python如何基于Tesseract实现识别文字功能
2020/06/05 Python
python如何快速拼接字符串
2020/10/28 Python
新西兰第一的行李箱网站:luggage.co.nz
2019/07/22 全球购物
阿迪达斯英国官方网站:adidas英国
2019/08/13 全球购物
EntityManager都有哪些方法
2013/11/01 面试题
法制宣传教育方案
2014/05/09 职场文书
三八红旗手事迹材料
2014/12/26 职场文书
英语教师个人总结
2015/02/09 职场文书
小班下学期个人总结
2015/02/12 职场文书
2015毕业生简历自我评价
2015/03/02 职场文书
刑事申诉状范文
2015/05/20 职场文书
开学第一周值周总结
2015/07/16 职场文书
python操作xlsx格式文件并读取
2021/06/02 Python