当我使用身高时,为什么div在父div之外:100%

STO*_*ORM 4 html css

我在将div放在另一个div中时遇到问题,该div具有400px的定义高度.

当我将内部div设置为100%然后它与外部div重叠并越过外部div.为什么100%的高度不会将内部div调整为外部div高度?

body {
  min-width:300px;
}

.header {
  background-color:pink;
  width:100%;
  height:400px;
}

.menu {
  background-color: red;
}

.header-container {
  color:white;
  background-color:gray;
  height:100%;
  max-width:400px;
  margin:auto;
}

.headline {
  padding-right:36px;
  padding-left:36px;
  padding-top:54px;
  padding-bottom:54px;
}

.clearfix {
  clear:both;
}
Run Code Online (Sandbox Code Playgroud)
<div class="header">
  <div class="menu">
  menu
  </div>
  <div class="header-container clearfix">
    <div class="headline">
      <span>das ist mein blog</span>
      <span>this is the underline</span>
    </div>
  </div>
</div>
<div class="blog">
y
</div>
<div class="footer">
x
</div>
Run Code Online (Sandbox Code Playgroud)

https://jsfiddle.net/g9ec4nw8/

G.H*_*unt 7

因为填充物.header-container导致溢出.

添加box-sizing: border-box;到您的.header-container,将修复盒子大小问题.

但不仅如此,你还没有考虑过18px的高度.menu.

完整的,通过更改您.header-container的以下代码:

.header-container {
        color:white;
        background-color:gray;
        height:calc(100% - 18px);
        max-width:400px;
        box-sizing: border-box;
        margin:auto;
        top:0;
        bottom:0;
        padding-right:36px;
        padding-left:36px;
        padding-top:54px;
        padding-bottom:54px;
 }
Run Code Online (Sandbox Code Playgroud)

将解决问题.

在这里小提琴.