我有一个主div(页面),它有另一个内部div(中央)。我为这两个div应用了CSS。我在CSS中分别给出了两个div的margin-top属性,但内部div的margin-top也应用于外部div。我该如何解决这个问题?
CSS:
#page
{
position: relative;
margin: auto;
margin-top: 40px;
margin-left: auto;
background-color: #b3dced;
height: 900px;
width: 900px;
border-radius: 10px;
}
.central
{
position: relative;
margin: auto;
margin-top: 80px;
background-color: blue;
height: 500px;
width: 500px;
border: 2px solid green;
border-radius: 10px;
}
<body>
<div id="page">
<div class="central">
<table>
<tr>
<td>name</td>
<td><input type="text" /></td>
</tr>
<tr>
<td>name</td>
<td><input type="text" /></td>
</tr>
<tr>
<td>name</td>
<td><input type="text" /></td>
</tr>
</table>
</div>
</div>
</body>
答案 0 :(得分:3)
该问题称为Margin Collapsing
。
当两个元素的垂直边距接触时,只有具有最大边距值的元素的边距将被尊重,而具有较小边距值的元素的边距将折叠为零。
您可以在子元素上使用padding
或top
来避免这种情况。或者在父级上添加一点填充。像这样:
#page {
padding-top:1px;
}
选中http://jsfiddle.net/269Pw/6/。
在此Article上,您可以找到有关此问题的更多信息以及解决此问题的多种方法。
答案 1 :(得分:1)
有不同的方法可以做到这一点。有关使用position: relative
的详情,请参阅Stack Overflow post Position an HTML element relative to its container using CSS 。
但有时根据您自己的代码更容易学习:
#page
{
position: relative;
margin-top: 40px;
margin-left: auto;
margin-right: auto;
background-color: #B3DCED;
height: 900px;
width: 900px;
border-radius: 10px;
}
.central
{
position: absolute;
margin-top: 80px;
margin-left: 200px;
margin-right: 200px;
background-color: blue;
height: 500px;
width: 500px;
border: 2px solid green;
border-radius: 10px;
}