Размер блока не работает на ли с встроенным блоком

Я не знаю почему, но только в моем нижнем колонтитуле с li в inline-block и border-top в активном классе мой box-sizing: border-box не работает.

Когда класс активен, есть граница сверху, и мы видим зазор внизу.

Вот пример:

* { 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>

Как я могу решить эту проблему?

Спасибо!

2 ответа

Решение

Добавлять 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 элементы не имеют свойства высоты. Их высота - это просто сумма высоты верхней границы и высоты поля содержимого, которая автоматически вычисляется из высоты строки.

Другие вопросы по тегам