使用javascript定位div

时间:2015-01-28 18:26:44

标签: javascript html css

我正在尝试垂直和水平对齐div。问题是div位置不居中。这是我使用的代码

<html>
<head>
 <meta charset="utf-8">
 <title>index</title>
 <script type="text/javascript" charset="utf-8">
   window.onload = function(){
   var width = screen.availWidth;
   var height = screen.availHeight;

   var modalWindow = document.getElementById('dialog');

   modalWindow.style.left = (width - modalWindow.offsetWidth) / 2;
   modalWindow.style.top = (height - modalWindow.offsetHeight) / 2;
}
 </script>
<style type="text/css" media="screen">
body{
 padding:0;
 margin:0;
}
div#overlay{
 position: absolute;
  width: 100%;
  height: 100%;
  padding: 0;
  margin: 0;
  background: rgba(0,0,0,0.4);
  z-index: 9998;
}

div#overlay #dialog{
  width: 200px;
  position: absolute;
  height: 100px;
  background: white;
}
</style>
</head>
<body>
<div id="overlay">
 <div id="dialog">
  <p>some text goes here</p>
  </div>
</div>
</body>
</html>

对话框div的位置略微位于右侧和底部。 这是一个截图 enter image description here 我做错了什么?

2 个答案:

答案 0 :(得分:1)

无需使用Javascript。因为您的dialog元素具有设置的高度/宽度,所以您可以这样做:

div#overlay #dialog{
  display:block;
  width:200px;
  height:100px;
  position:absolute;
  top:50%;
  left:50%;
  margin-top:-50px;
  margin-left:-100px;
  background: white;
}

这里是Fiddle

答案 1 :(得分:0)

你定位在盒子的角落,而不是中心,所以你需要在计算位置时考虑到这一点......

modalWindow.style.left = ((width - modalWindow.offsetWidth) / 2) - 100 ;
modalWindow.style.top  = ((height - modalWindow.offsetHeight) / 2) - 50;

10050是高度的一半,宽度的一半。