当设置doctype时,为什么h1标签在div中显示不同?

dbr*_*dbr 4 html css

我有一个带div <h1>标签的div,没有边距.如果我定义任何doctype,div上方会出现一个空格.

如果我删除<h1>标签,或删除doctype定义,则没有空间(应该有.为什么?

示例HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
    <style>
        body { 
          margin:0
        }
        #thediv {
          background-color:green
        }
    </style>
</head>
<body>
    <div id="thediv">
        <h1>test</h1>
    </div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

问题是绿色div上方的空间,移除DOCTYPE并且空间消失,将<h1>标签更改为 <b>,空间也消失.它适用于任何doctype(XHTML/HTML,严格/过渡/等)

几乎在所有浏览器中都有用(使用http://browsershots.org).有趣的是,似乎唯一正确显示它的浏览器是Internet Explorer 6.0 ..

Phi*_*oss 7

根据CSS规范,绿色div上方的空间是正确的行为.这是因为h1的上边距与div的上边距相邻.

保持div内部h1边距的一种方法是为div添加边框:

#thediv{ background-color:green; border: 1px transparent solid; }
Run Code Online (Sandbox Code Playgroud)