【发布时间】:2012-09-28 10:58:02
【问题描述】:
有两个问题。
首先,如果div上没有设置高度,并且没有元素 包含在其中,它们根本不会显示吗?
其次,根据第一个问题,如果我想显示一个 div 为身体高度的 90%,水平居中 垂直,即使里面没有内容,什么是 需要css吗?
【问题讨论】:
-
试试吧!测试这个比输入问题要快!
有两个问题。
首先,如果div上没有设置高度,并且没有元素 包含在其中,它们根本不会显示吗?
其次,根据第一个问题,如果我想显示一个 div 为身体高度的 90%,水平居中 垂直,即使里面没有内容,什么是 需要css吗?
【问题讨论】:
欢迎使用神奇的定位功能,高度会自动计算:
#myemptydiv{
position:absolute;
top: 5%; // height gets calculated automatically
bottom: 5%;
width: 600px;
margin: auto;
}
所以,回答您的第一个问题:不,至少如果使用定位没有隐式高度。上面给出的代码回答了第二个问题。
另见:
【讨论】:
要使 div(或任何块元素)完全居中,您应该结合使用绝对定位和负边距。看看这里:enter link description here。尝试调整窗口大小:它的定位是自动发生的。
div {
width: 90%; /* Can be a non-percentual number */
margin-left: -45%; /* negative value of element's width/2 | Can be a non-percentual number */
margin-top: -45%; /* negative value of element's height/2 | Can be a non-percentual number */
height: 90%; /* Can be a non-percentual number */
position: absolute;
top: 50%; /* must always be 50% */
left: 50%; /* must always be 50% */
border: 1px solid;
}
当然,当您只使用百分比值时,只需进行数学运算会更容易:50% - 45% = 5%(正如 Zeta 的帖子所建议的那样),但我使用这种方法来证明这适用于非百分比值也是如此。 Example.
div {
width: 320px;
margin-left: -160px; /* negative value of element's width/2 */
margin-top: -120px; /* negative value of element's height/2 */
height: 240px;
position: absolute;
top: 50%; /* must always be 50% */
left: 50%; /* must always be 50% */
border: 1px solid;
}
当一个元素没有特定的高度并且没有内容时,你不会看到它,不会。它将具有自动宽度(通常为 100%)但没有高度。不过,您可以通过添加边框使其可见:http://jsfiddle.net/TALAA/2/
【讨论】:
top:5%;bottom:5% 而没有margin-top 对于垂直位置来说就足够了。