[英]Disable border collapsing in this test case
如果检查以下演示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>
这是因为<p>具有最高边距,并且通过边框折叠将折叠到父元素。 虽然这是创建文本段落等的理想效果,但很少用于布局。
如何确定边界没有提升到某些元素(在本例中是从&ltp;到父div)?
-更新-
因为答案似乎都落在了“禁用该段落的填充”之路上,所以我对问题做了一些修改,并更改了标题。
从p删除填充是删除症状的一种方法,而不是原因。
body / html的填充也需要重置。
<p>
元素默认情况下有一个margin-top
,它将整个内容压低。 您可以使用<p>
上的margin-top: 0
摆脱它。
这是因为<p>
是块元素,并且总是从新行开始。 如果您希望代码与<p>
标记一起使用,则将其添加到CSS
p
{
display:inline;
}
这有点la脚,但我实际上是自己发现的。
再一次是崩溃的边界欺骗了我。 这是一个很好的论坛帖子,对此进行了描述。 在我的设计中,删除<p>元素的边距是适当的。 从我的读物来看,下一件最好的事情就是给父母一点钱。
将此添加到您的样式:
#page p{ margin-top: 0; }
是的,在顶部会留有空隙,因为段落之前和之后都留有一些空间。 下面删除空格尝试一下:
<!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;
}
#page p.first{
margin-top:0;
}
#footer{
background-color: red;
height: 50px;
}
</style>
</head>
<body>
<div id="page">
<p class="first">test</p>
</div>
<div id="footer">footer</div>
</body>
</html>
如何添加overflow: hidden;
到父元素?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.