元素的边距

margin of an element

我有这个简单的 html 和 css

body{
  background-color: black;
  padding:0;
  margin: 0;
  box-sizing: border-box;
}

#ctr{
  height: 500px;
  width: 200px;
  margin: 0 auto;
  background-color: red;

}

#ctr > .box{
  background-color: white;
  height: 200px;
  width: 200px;
  border: 1px solid black;
  margin-top:10px;
}
<div id = "ctr">
  <div class = "box">
    <div class="something1"></div>
    <div class="something2"></div>
  </div>
</div>

我正在尝试向红色 div(ctr id) 内的白框(方框 class)添加 margin-top,但是整个红色 div边距而不仅仅是白色 div.

这是示例的 jsfiddle。 https://jsfiddle.net/6tvrwxhg/

overflow:auto(或hidden)添加到父级(#ctr

body {
  background-color: black;
  padding:0;
  margin: 0;
  box-sizing: border-box;
}

#ctr {
  height: 500px;
  width: 200px;
  margin: 0 auto;
  background-color: red;
  overflow: auto;
}

#ctr > .box{
  background-color: white;
  height: 200px;
  width: 200px;
  border: 1px solid black;
  margin-top:10px;
}
<div id="ctr">
  <div class="box">
    <div class="something1"></div>
    <div class="something2"></div>
  </div>
</div>

详细资料不错answer

https://www.w3.org/TR/CSS2/box.html#collapsing-margins

Parent/First child margin collapsing,如果没有边框、填充、内联内容或分隔父子的间隙,就会发生这种情况。所以你可以在 parent

上添加 border-top

body {
  background-color: black;
  padding: 0;
  margin: 0;
  box-sizing: border-box;
}
#ctr {
  height: 500px;
  width: 200px;
  margin: 0 auto;
  background-color: red;
  border-top: 1px solid transparent;
}
#ctr > .box {
  background-color: white;
  height: 200px;
  width: 200px;
  border: 1px solid black;
  margin-top: 10px;
}
<div id="ctr">
  <div class="box">
    <div class="something1"></div>
    <div class="something2"></div>
  </div>
</div>

或者您可以向父元素添加填充或使用 overflow: hidden

body {
  background-color: black;
  padding: 0;
  margin: 0;
  box-sizing: border-box;
}
#ctr {
  height: 500px;
  width: 200px;
  margin: 0 auto;
  background-color: red;
  overflow: hidden
}
#ctr > .box {
  background-color: white;
  height: 200px;
  width: 200px;
  padding-top: 1px;
  margin-top: 10px;
}
<div id="ctr">
  <div class="box">
    <div class="something1"></div>
    <div class="something2"></div>
  </div>
</div>

您可以在 Mastering margin collapsing

阅读更多相关信息