在显示器中央打开一个弹出窗口

时间:2013-07-27 23:18:48

标签: javascript jquery html popup

我正在尝试在显示器的中央打开一个弹出窗口。据我所知,每台台式机或笔记本电脑的屏幕尺寸会有所不同所以这就是我寻找某种方式的原因,这样每当我的代码试图打开一个弹出窗口时,它应该在浏览器的中心打开。

以下是我的代码 -

<html>

<head>
<style>

* { font-family: Trebuchet MS; }
#containerdiv {width:90%; height: 90%; display: none; position: fixed;margin-top: 5%; margin-left: 5%; background:#FFF; border: 1px solid #666;border: 1px solid #555;box-shadow: 2px 2px 40px #222; z-index: 999999;}
/*#containerdiv iframe {display:none; width: 100%; height: 100%; position: absolute; border: none; }*/
#blockdiv {background: #000; opacity:0.6;  position: fixed; width: 100%; height: 100%; top:0; left:0; display:none;}
ul { padding:10px; background: #EEE; position: absolute; height: 200px; overflow: scroll;}
ul li {color: #222; padding: 10px; font-size: 22px; border-bottom: 1px solid #CCC;  }
h3 { font-size: 26px; padding:18px; border-bottom: 1px solid #CCC; }
#close { top: 13px;position: absolute;right: 13px; padding: 10px; background: #EEE; border: 1px solid #CCC;}
#close:hover {  cursor: pointer; background: #E5E5E5 }

#apply { top: 13px;position: absolute;left: 13px; padding: 10px; background: #EEE; border: 1px solid #CCC;}
#apply:hover {  cursor: pointer; background: #E5E5E5 }

</style>

<script type="text/javascript"  src="http://code.jquery.com/jquery-1.7.2.min.js"></script>

<script>

function open(url) {
    $('#blockdiv').fadeIn();
    $('#iframe').attr('src', url);
    $('#containerdiv').fadeIn();   
}

function close() {  
    $('#blockdiv').fadeOut();
    $('#containerdiv').fadeOut();  
}

$(document).ready(function() {
  $('ul').css({width: $('#containerdiv').width()-20,height:    $('#containerdiv').height()-90})

     $('#close').click( function() { close() })
     $('#apply').click( function() { open('http://www.google.com/') })

});

</script>
</head>
<body>
<span id="apply">ApplyOnline</span>
<div id="blockdiv"></div>
<div id="containerdiv">
    <iframe id="iframe" style="width:100%; height: 100%; outline: 1px solid red;"></iframe>
    <span id="close">Close</span>
</div>
</body>
</html>

但不知何故上面的代码,并没有在显示器的中心打开。有人可以帮我这个吗?我需要在上面的代码中进行哪些更改,以便始终打开圆圈中心的弹出窗口。

2 个答案:

答案 0 :(得分:1)

你可以将你的弹出窗口放在css中,如

这只是css方法,使其居中,因此不需要js来居中

#containerdiv {
    width:90%;
    height: 90%;
    display: none;
    position: fixed;
    left:50%;
    top:50%;
    margin:-45% 0 0 -45%;
    background:#FFF;
    border: 1px solid #666;
    border: 1px solid #555;
    box-shadow: 2px 2px 40px #222;
    z-index: 999999;
    box-sizing:border-box;
    -webkit-box-sizing:border-box;
    -moz-box-sizing:border-box;
}

答案 1 :(得分:1)

它显示在浏览器窗口的中心位置。

如果您想根据客户端显示器的屏幕分辨率将其居中,可以使用:

var centerDiv=function(){
    var popUpHeight=$('#containerdiv').height();
    var popUpWidth=$('#containerdiv').width();
    var yPos=(window.screen.availHeight/2)-(popUpHeight/2)-window.screenY-(window.outerHeight-window.innerHeight);
    var xPos=(window.screen.availWidth/2)-(popUpWidth/2)-window.screenX-(window.outerWidth-window.innerWidth);
    $('#containerdiv').css({position:"absolute",top: yPos+"px",left: xPos+"px"});
}
window.onload=centerDiv();
var lastX = window.screenX;
var lastY = window.screenY;
var lastHeight = window.innerHeight;
var lastWidth = window.innerWidth;
setInterval(function(){
  if(lastX != window.screenX || lastY != window.screenY || lastHeight != window.outerHeight || lastWidth != window.outerWidth){
    centerDiv();
  }

  oldX = window.screenX;
  oldY = window.screenY;
}, 33);