提问者:小点点

车身高度100%显示垂直滚动条


出于好奇,考虑到下面的示例,为什么在#container div上有边距会导致浏览器中出现垂直滚动条?容器的高度比设置为100%的车身高度小得多。

我已经将除了#容器之外的所有元素的填充和边距设置为0。注意,我故意省略了#container div上的绝对定位。在这种情况下,浏览器是如何计算身体的高度的,边距是如何影响它的?

<!DOCTYPE html>
<html>
<head>
<style type="text/css">
* { padding:0; margin:0;}
html, body { height:100%; }
#container
{
  padding:10px;
  margin:50px;
  border:1px solid black;
  width: 200px;
  height: 100px;
}
</style>
</head>
<body>
  <div id='container'>
  </div>
</body>
</html>

JSFiddle上的示例


共2个答案

匿名用户

如果您绘制HTMLbody的背景(赋予它们各自的颜色),您很快就会注意到body#container一起下移,而#container本身与body的顶部根本没有偏移。这是边距折叠的一个副作用,我在这里详细介绍了这一点(尽管那个答案描述了一个略有不同的设置)。

正是这种行为导致滚动条出现,因为您已经声明body具有HTML的100%高度。注意,body的实际高度不受影响,因为高度计算中从不包括边距。

匿名用户

基于@BoltClock♦的回答,我把边距归零了。
所以

html,body, #st-full-pg {
   height: 100%;
   margin: 0;
}

将id“st-full-pg”分配给panel div(进一步包含panel-heading和panel-body)的工作