用jQuery实现弹出窗口/弹出div层

23 篇文章 0 订阅
15 篇文章 0 订阅

原文链接:http://hi.baidu.com/awz_tiger/item/863cfc10c4bb0f6171d5e8d9

http://blog.163.com/qiuxinke2006@126/blog/static/24885580201131763139536/

http://hi.baidu.com/kilwin/blog/item/f4cfaf2695375920c9955947.html

 

  用div层代替传统的弹出窗口已经变得很普遍了,因为div层是网页的一部分,不会像传统的弹出窗口那样容易被浏览器拦截。我们常见的弹出div层就是在页面加载后或者点击页面的某个链接时弹出一个div层,同时页面的其他地方会变灰。那么今天我就试着用jquery来实现这个效果。


  通过今天的jquery实例学习,我们要达到这样的效果:点击页面的链接,弹出一个div层,同时页面的其他部分变灰并且不能点击;无论是改变浏览器窗口大小还是下拉滚动条,这个弹出层都能始终保持居中;点击页面的关闭按钮,弹出层消失,页面恢复原样。

  点击查看效果>>>

  这里借鉴之前的一篇文章《基于jQuery的固定飘浮层》,使弹出窗口可以始终固定在浏览器的正中间。在这里有一个要点,就是如何使页面的其他地方在弹出窗口的同时变灰。我使用的方法就是在点击链接弹出div层的时候,给页面增加一个div层,这个层就“负责”使页面变灰。点击关闭后,删除这个层就能使页面恢复原样。不知道有没有更好的方法,有的话请告诉我哦。

  其他应该没什么问题了,还是很简单的,在这里顺便贴上jquery代码:
  
$(function(){

  var screenwidth,screenheight,mytop,getPosLeft,getPosTop

  screenwidth = $(window).width();

  screenheight = $(window).height();

  //获取滚动条距顶部的偏移

  mytop = $(document).scrollTop();

  //计算弹出层的left

  getPosLeft = screenwidth/2 - 260;

  //计算弹出层的top

  getPosTop = screenheight/2 - 150;

  //css定位弹出层

  $("#box").css({"left":getPosLeft,"top":getPosTop});

  //当浏览器窗口大小改变时...

  $(window).resize(function(){

  screenwidth = $(window).width();

  screenheight = $(window).height();

  mytop = $(document).scrollTop();

  getPosLeft = screenwidth/2 - 260;

  getPosTop = screenheight/2 - 150;

  $("#box").css({"left":getPosLeft,"top":getPosTop+mytop});

  });

  //当拉动滚动条时...

  $(window).scroll(function(){

  screenwidth = $(window).width();

  screenheight = $(window).height();

  mytop = $(document).scrollTop();

  getPosLeft = screenwidth/2 - 260;

  getPosTop = screenheight/2 - 150;

  $("#box").css({"left":getPosLeft,"top":getPosTop+mytop});

  });

  //点击链接弹出窗口

  $("#popup").click(function(){

  $("#box").fadeIn("fast");

  //获取页面文档的高度

  var docheight = $(document).height();

  //追加一个层,使背景变灰

  $("body").append("<div id='greybackground'></div>");

  $("#greybackground").css({"opacity":"0.5","height":docheight});

  return false;

  });

  //点击关闭按钮

  $("#closeBtn").click(function() {

  $("#box").hide();

  //删除变灰的层

  $("#greybackground").remove();

  return false;

  });

  });



  源代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  
<html xmlns="http://www.w3.org/1999/xhtml">
  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
<title>jquery pop up</title>  
<script src="jquery-ui-1.10.3/jquery-1.9.1.js" type="text/javascript"></script>
  
<style type="text/css">  
  * { margin:0; padding:0;  } 
  #wrapper {  height:1000px;  }  
  #box {  
  display:none;   
  position:absolute;  
  width:520px;  
  height:300px; 
  border:#f60 solid 2px; 
  z-index:200;  
  background:#fff;  
  }  
  #closeBtn {  position:absolute;  right:10px;  top:10px;  cursor:pointer;  }  
  #greybackground {  
  background:#000;  
  display:block;  
  z-index:100;  
  width:100%;  
  position:absolute;  
  top:0;  
  left:0; 
  }  
  </style>  
</head>
  
<body>
  
    <div id="wrapper">   
        <a href="http://www.netchina.com.cn" id="popup">点击弹出div窗口</a>   
    </div>
      
    <div id="box">
        <span id="closeBtn">关闭</span>
    </div>
  
<script type="text/javascript">  
$(function(){  
      var screenwidth,screenheight,mytop,getPosLeft,getPosTop;
      screenwidth = $(window).width();  
      screenheight = $(window).height();  
      mytop = $(document).scrollTop();  
      getPosLeft = screenwidth/2 - 260;  
      getPosTop = screenheight/2 - 150;  
      $("#box").css({"left":getPosLeft,"top":getPosTop}); 
    
    $(window).resize(function(){  
      screenwidth = $(window).width();  
      screenheight = $(window).height();  
      mytop = $(document).scrollTop();  
      getPosLeft = screenwidth/2 - 260;  
      getPosTop = screenheight/2 - 150;  
      $("#box").css({"left":getPosLeft,"top":getPosTop+mytop});  
    });  
  
  $(window).scroll(function(){  
      screenwidth = $(window).width();  
      screenheight = $(window).height();  
      mytop = $(document).scrollTop();  
      getPosLeft = screenwidth/2 - 260;  
      getPosTop = screenheight/2 - 150;  
      $("#box").css({"left":getPosLeft,"top":getPosTop+mytop});  
  });  
  
  $("#popup").click(function(){  
      $("#box").fadeIn("fast");  
      $("body").append("<div id='greybackground'></div>");  
      var documentheight = $(document).height();  
      $("#greybackground").css({"opacity":"0.5","height":documentheight});  
      return false;  
  });  
  
  $("#closeBtn").click(function() { 
      $("#box").hide();  
      $("#greybackground").remove();  
      return false;  
  });  
  
});  
  </script>
  </body>
</html>


  

JavaScript实现弹出窗口实质上就是在浏览器上画了一个方形区域,并在开始时将其隐藏,只是到某个JavaScript事件时才通过修改css的属性值来将其显示出来。

其大致步骤为:

创建一个装载弹出窗口的div

<html>   
  <head>   
    <title>jQuery实例1:浮动窗口</title>   
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">   
   <style type="text/css">
        #win{    
        /*边框*/   
        border:1px red solid;    
        /*窗口的高度和宽度*/   
        width : 300px;    
        height: 200px;    
        /*窗口的位置*/   
        position : absolute;    
        top : 100px;    
        left: 350px;    
        /*开始时窗口不可见*/   
        display : none;    
    }    
    /*控制背景色的样式*/   
    #title{    
        background-color : blue;    
        color : red;    
        /*控制标题栏的左内边距*/   
        padding-left: 3px;    
    }    
    #cotent{    
        padding-left : 3px;    
        padding-top :  5px;    
    }    
    /*控制关闭按钮的位置*/   
    #close{    
        margin-left: 188px;    
        /*当鼠标移动到X上时,出现小手的效果*/   
        cursor: pointer;    
    }   
    #win{  
        /*边框*/  
        border:1px red solid;  
        /*窗口的高度和宽度*/  
        width : 300px;  
        height: 200px;  
        /*窗口的位置*/  
        position : absolute;  
        top : 100px;  
        left: 350px;  
        /*开始时窗口不可见*/  
        display : none;  
    }  
    /*控制背景色的样式*/  
    #title{  
        background-color : blue;  
        color : red;  
        /*控制标题栏的左内边距*/  
        padding-left: 3px;  
    }  
    #cotent{  
        padding-left : 3px;  
        padding-top :  5px;  
    }  
    /*控制关闭按钮的位置*/  
    #close{  
        margin-left: 188px;  
        /*当鼠标移动到X上时,出现小手的效果*/  
        cursor: pointer;  
    }   
    </style>
    <script type="text/javascript" src="jquery-ui-1.10.3/jquery-1.9.1.js"></script>
    <script type="text/javascript">
    function showWin(){    
    /*找到div节点并返回*/   
    var winNode = $("#win");    
   //方法一:利用js修改css的值,实现显示效果    
   // winNode.css("display", "block");    
   //方法二:利用jquery的show方法,实现显示效果    
   // winNode.show("slow");    
    //方法三:利用jquery的fadeIn方法实现淡入    
    winNode.fadeIn("slow");    
    }    
    function hide(){
        var winNode = $("#win");    
        //方法一:修改css的值    
        //winNode.css("display", "none");    
        //方法二:jquery的fadeOut方式    
        winNode.fadeOut("slow");    
        //方法三:jquery的hide方法    
        winNode.hide("slow");    
    }  
    </script>
  </head>   
  <body>   
  </body>   
    <a onClick="showWin()" href="#" mce_href="#">弹出窗口</a>   
    <div id="win">   
        <div id="title">我是标题栏!<span id="close" onClick="hide()">X</span></div>   
        <div id="content">我是一个窗口!</div>   
    </div>   
</html> 


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值