CSS margin-top 让 div 超出了 parent 的高度

CSS margin-top makes div go out of parent's height

我在设置布局时遇到问题,因为我的 child div 之一超出了 parent div.

我有:header 高度为 10%,容器高度为 90%,内部 'div1' 高度设置为 90%,margin-top 设置为 10%。如果我删除 margin-top 一切正常,否则它会超出 parent 大小创建卷轴等。(我想要 div1 高度设置,我不需要将高度设置为自动等)

JsFiddle:https://jsfiddle.net/5q9vh93n/

HTML:

<body>
    <div id="header">Header</div>
    <div id="container">
        <div id="div1">1</div>
        <div id="div2">2</div>
    </div>
</body>

CSS:

body, html
{
    color: white;
    margin: 0px;
    padding: 0px;
    height: 100%;
}
#header
{
    background-color: blue;
    height: 10%;
}
#container
{
    width: 100%;
    height: 90%;
    background-color: gray;
}
#div1 {
    background-color: red;
    float: left;
    width: 15.67%;
    margin-top: 10%;
    margin-left: 1.5%;
    height: 90%;
}
#div2 {
    background-color: green;
    float: right;
    width: 100px;
    width: 43.17%;
    margin-right: 3.6%;
}

这里使用Transform是demo

#div1 {
  background-color: red;
  float: left;
  width: 15.67%;
  transform: translateY(10%);
  margin-left: 1.5%;
  height: 90%;
}

您应该使用 position: absolute; 并将 margin-top 更改为 top,将 margin-left 更改为 left。所以#div的css如下:

#div1 {
    position: absolute;
    background-color: red;
    float: left;
    width: 15.67%;
    top: 10%;
    left: 1.5%;
    height: 90%;
}

当我发现这一点时我真的很惊讶,但是垂直填充和边距是相对于 parent 的宽度,而不是高度。

要解决您的问题,您可以使用 top 属性 代替,如您所料,它是相对于 parent 的高度。

所以,只需将您的代码更改为这个,它就会起作用。

#div1 {
    top: 10%;
    position: relative;
}

JSFiddle:https://jsfiddle.net/5q9vh93n/2/

希望对您有所帮助!