我正在为邮件列表注册制作灯箱样式弹出窗口,但我希望弹出窗口位于可见页面的中心,而不仅仅是整个文档的中心;如果用户滚动到页面底部并单击以进行注册,我希望它显示在屏幕的中央。
我认为jQuery / JS将是最好的方法;这是我当前的CSS代码,它运行得相当好,但div需要动态地推入可见空间以用于较小的屏幕。
.my-div{
width:960px;
height:540px;
position:absolute;
top:50%;
left:50%;
margin-left:-480px;
margin-top:-270px;
z-index:60;
display:none;
}
答案 0 :(得分:38)
答案 1 :(得分:5)
我知道这不会解决问题,但它是一个很好的参考和起点:How to position a div in the center of browser window
将Div正好位于屏幕中央
<!DOCTYPE html>
<html >
<head>
<style type="text/css">
.exactCenter {
width:200px;
height:200px;
position: fixed;
background-color: #00FF00;
top: 50%;
left: 50%;
margin-top: -100px;
margin-left: -100px;
}
</style>
</head>
<body>
<div class="exactCenter"> </div>
</body>
</html>
答案 2 :(得分:2)
使用jQuery:
var left = ($(window).width() - $(.my-div).width()) / 2;
var top = ($(window).height() - $(.my-div).height()) / 2;
$('.my-div').position({top: top + 'px', left: left + 'px});
答案 3 :(得分:1)
虽然accepted answer最好,但如果您无法将divs position
设置为fixed
,那么您可以使用此纯JavaScript解决方案。
var myElement = document.getElementById('my-div'),
pageWidth = window.innerWidth,
pageHeight = window.innerHeight,
myElementWidth = myElement.offsetWidth,
myElementHeight = myElement.offsetHeight;
myElement.style.top = (pageHeight / 2) - (myElementHeight / 2) + "px";
myElement.style.left = (pageWidth / 2) - (myElementWidth / 2) + "px";
或更简洁的版本:
var w = window,
elem = document.getElementById('my-div');
elem.style.top = (w.innerHeight/2) - (elem.offsetHeight/2) + 'px';
elem.style.left = (w.innerWidth/2) - (elem.offsetWidth/2) + 'px';
这个答案是来自Lahiru Ashan's回答的vanilla JavaScript版本。