box-sizing 不适用于 li with inline-block

box-sizing doesn't works on li with inline-block

我不知道为什么,但只有在我的页脚上,li in inline-block 和 border-top 处于活动状态 class,我的 box-sizing : border-box 不起作用。

当class激活时,有一个border-top,我们看到底部有一个缺口。

举个例子:

* { box-sizing: border-box }
#header{
 position:absolute;
 top:0;
 right:0;
 left:0;
 background-color:#333c45;
 height:60px;
 line-height:60px; 
}
#corp{
 position:absolute;
 top:60px;
 bottom:60px;
 right:0;
 left:0;
 background-color:#CDCDCD;
}
#footer{
 position:absolute;
 bottom:0;
 right:0;
 left:0;
 background-color:#333c45;
 height:60px;
 line-height:60px;
  
}
#footer li{
 display:inline-block;
 width:45%;
}
ul{
 margin:0;
 padding:0;
}
.active{
 color:#05FF01;
 border-top:2px solid #05FF01;
}
<html>
<head>
</head>
<body>
<div id="header">
test 
</div>
<div id="corp">
</div>
<div id="footer">
<ul>
<li class="active">boutton 1</li>
<li>boutton 2</li>
</ul>
</div>
</body>
</html>

我该如何解决这个问题?

谢谢!

在正文中添加 overflow:hidden。它将阻止任何垂直滚动条。

此外,作为旁注,IMO 对 position:absolute 中的每个元素进行布局是一个糟糕的主意,您很快就会头疼。

* {
  box-sizing: border-box
}

body {
  overflow: hidden;
}

#header {
  position: absolute;
  top: 0;
  right: 0;
  left: 0;
  background-color: #333c45;
  height: 60px;
  line-height: 60px;
}

#corp {
  position: absolute;
  top: 60px;
  bottom: 60px;
  right: 0;
  left: 0;
  background-color: #CDCDCD;
}

#footer {
  position: absolute;
  bottom: 0;
  right: 0;
  left: 0;
  background-color: #333c45;
  height: 60px;
  line-height: 60px;
}

#footer li {
  display: inline-block;
  width: 45%;
}

ul {
  margin: 0;
  padding: 0;
}

.active {
  color: #05FF01;
  border-top: 2px solid #05FF01;
}
<html>

<head>
</head>

<body>
  <div id="header">
    test
  </div>
  <div id="corp">
  </div>
  <div id="footer">
    <ul>
      <li class="active">boutton 1</li>
      <li>boutton 2</li>
    </ul>
  </div>
</body>

</html>

box-sizing 确定如何解释指定的高度和宽度属性值,但您的 li 元素没有高度 属性。它们的高度只是顶部边框高度和根据行高自动计算的内容框高度的总和。