出于好奇,考虑到下面的示例,为什么在#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上的示例
如果您绘制HTML
和body
的背景(赋予它们各自的颜色),您很快就会注意到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)的工作