2009-09-01 88 views
1

比方说,我有以下的简约HTML代码:随着XHTML严格的边界影响的背景颜色

<!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" > 
<body style="background-color:silver; padding:0px; margin:0px;"> 
    <div style="background-color:Lime;"> 
    <h1>Title</h1> 
    </div> 
</body> 
</html> 

有在页面顶部的缝隙,它好像只有H1的背景是彩色的石灰,或者好像H1正在推倒父div标签。但是,如果我添加“border:solid 1px red;”根据div的风格,整个div的背景都是石灰,而不仅仅是H1。我用IE8,FF3.5和Chrome测试了它。他们都有相同的行为。如果我删除了严格的XHTML DocType,它就像“预期的”一样工作。我错过了什么?谢谢。

+0

页面顶部的空白是否合适? – 2009-09-01 17:00:08

+0

我会说这是意想不到的。我的意思是,div占据了这个空间,只是不是整个div被着色,只有H1出现的部分,至少在你指定边框之前。这几乎就像股市变得透明,除了H1。 – pbz 2009-09-01 17:02:49

回答

1

我“失踪”的是collapsing margins的概念。通过为div指定一个边框,我可以有效地解除给出预期结果的边距。另一种解除崩溃的方法是给div至少填充1px。不幸的是,在我的情况下,这些都是不可接受的,即我不想在div上添加边框或填充,所以我将不得不寻找不同的解决方案,但至少它解释了这种行为。