我正努力将#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>
答案 0 :(得分:3)
这里的问题被称为“崩溃边际”。您可以在css规范中阅读更多相关信息。
http://www.w3.org/TR/CSS21/box.html#collapsing-margins
这并不是保证金不起作用,而是保证金正在崩溃,导致保证金应用于父箱的顶部。
您会注意到,当保证金应用于子女时,父母会向下移动。
避免边距折叠的一种解决方法(很多)是将overflow: hidden
添加到父元素:
编辑:要记住的另一个要点(在另一个已被删除的答案中)是所有百分比边距都是基于元素宽度的百分比,甚至是和底部。