将孩子置于其父母的中心

时间:2013-05-23 02:30:26

标签: html css

我正努力将#child放在#parent的100%高度和宽度中心。为什么将#child的最高位置设置为10%,但使用10%作为保证金最高位呢?

http://jsfiddle.net/rbtstudio/SCmfG/

<style>
    html {
        height: 100%;
    }
    body {
        height: 100%;
        overflow: hidden;
    }
    #parent {
        width: 100%;
        height: 100%;
        background-color: #323232;
    }
    #child {
        width: 80%;
        height: 80%;
        background-color: #eaeaea;
        margin: 0 auto;
        position: relative;
        top: 10%;
    }
    /*
    #child {
        width: 80%;
        height: 80%;
        margin-top: 10%;
        margin-right: auto;
        margin-bottom: 0;
        margin-left: auto;
    }
    */
</style>

<div id="parent">
    <div id="child"></div>
</div>

1 个答案:

答案 0 :(得分:3)

这里的问题被称为“崩溃边际”。您可以在css规范中阅读更多相关信息。

http://www.w3.org/TR/CSS21/box.html#collapsing-margins

这并不是保证金不起作用,而是保证金正在崩溃,导致保证金应用于父箱的顶部。

您会注意到,当保证金应用于子女时,父母会向下移动。

http://jsfiddle.net/SCmfG/4

避免边距折叠的一种解决方法(很多)是将overflow: hidden添加到父元素:

http://jsfiddle.net/SCmfG/5/

编辑:要记住的另一个要点(在另一个已被删除的答案中)是所有百分比边距都是基于元素宽度的百分比,甚至是和底部。