1

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

下面是我的代码-

<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>

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

4

2 回答 2

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);
于 2013-07-27T23:31:44.030 回答
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;
}
于 2013-07-27T23:24:26.467 回答