【问题标题】:Center a div vertically将 div 垂直居中
【发布时间】:2011-08-17 10:43:00
【问题描述】:

我必须将 div 垂直居中,上下只有一个边距。

所以我让它用 JavaScript 生成边距,像这样。

var xLength = ((document.getElementById("outerdiv").offsetHeight)+"px");

xLength = (xLength - 222); //222 is the Length of the to be centered div

xMargin = (xLength / 2); //because of the 2 margins
xMargin = (xMargin());

document.getElementById(innerdiv).style.marginTop = xMargin;
document.getElementById(innerdiv).style.marginBottom = xMargin;

请帮忙,不能让它工作,有什么想法吗?

这里是外层和内层div的CSS:

#outerdiv {   
    min-height:302px;
    width:58px;
    margin-left:640px;
    z-index:2;
    float:right;
    margin-right:228px;
    border: 1px solid black;
    position:absolute;
}

#innerdiv {
    height:222px;
    width:58px;
    position:absolute;
    border: 1px solid green;
}

HTML:

<div id='outerdiv'>
  <div id='innerdiv'>
  </div>
</div>

【问题讨论】:

  • 你能在jsfiddle上举例说明你当前的代码(包括html)吗?
  • 这段代码有很多问题..
  • 您应该发布您的整个代码,否则我们无法真正帮助您。

标签: javascript css margins


【解决方案1】:

这是因为您的元素的父元素本身没有定义的高度。


关于你的 JavaScript,一个问题是这一行,它根本没有意义,应该删除:

xMargin = (xMargin());

您还应该将“px”添加到您正在设置的值中,并在 ID 周围加上引号,如下所示:

document.getElementById('innerdiv').style.marginTop = xMargin + 'px';
document.getElementById('innerdiv').style.marginBottom = xMargin + 'px';

【讨论】:

  • 确实如此,就像这样min-height:302px;
  • 请发布一个带有完整 HTML 和 CSS 的实时示例的链接。
  • 谢谢,我正在学习javascript,很抱歉代码混乱
【解决方案2】:
window.onload = checkAvailableHeight;

window.onresize = checkAvailableHeight;

function checkAvailableHeight(){
    var yourDiv = document.getElementById("yourDiv");
    yourDiv.style.marginTop = ((window.innerHeight - yourDivHeight) / 2) + "px";
}

【讨论】:

  • 这实际上是一个很好的解决方案,但我已经在 5 个月前解决了,还是谢谢。
猜你喜欢
  • 2011-07-07
  • 1970-01-01
  • 2011-03-22
  • 1970-01-01
  • 2014-09-16
  • 2017-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多