如果您查看以下演示HTML,您会看到所有浏览器页面顶部都有一个意外的橙色边框(我已选中).如果<p>标记被<div>标记替换,那么一切都像预期的那样工作.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test Lay-Out</title>
<style>
html{
overflow: auto; /*for IE*/
height: 100%;
}
body{
background-color: orange;
margin: 0;
height: 100%;
}
#page{
background-color: green;
height: 100%;
margin-bottom: -50px;
}
#footer{
background-color: red;
height: 50px;
}
</style>
</head>
<body>
<div id="page">
<p>test</p>
</div>
<div id="footer">footer</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这是因为<p>有一个上边距,并且通过边框折叠会折叠到父元素.虽然这是创建文本段落等所需的效果,但它很少用于布局.
如何确保边界不会升级到某些元素(在这种情况下从<p;到父div)?
--UPDATE--
因为答案似乎都在"禁用段落上的填充"道路上,我重新设计了我的问题并改变了标题.
从p中移除填充是一种消除症状的方法,而不是原因.