为什么IE9将我的HTML5块级元素显示为内联元素?

4

HTML5不应该在IE9中工作吗?但我发现它对我来说并没有像预期的那样工作。

这是我的HTML5代码:

<!DOCTYPE html>
<html>
<head><title>

    Dripel - Welcome

</title>
    <!--[if lt IE 9]> 
        <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> 
    <![endif]-->
</head>
<body>
    <header>Welcome to Dripel</header>
    <section id="main">

        I am under development. Please check back later.

    </section>
    <footer>
    </footer>
</body>
</html>

您可以在http://www.dripel.com/上查看它。

在IE 9中,<header><section>元素被显示为内联元素。请注意,此时我没有使用任何CSS。

有什么想法吗?


1
你是否意外启用了“兼容性”模式? - Strelok
IE9仍处于测试版阶段,这可能也是原因。 - pritaeas
@Strelok:兼容模式已关闭 - Moon
3个回答

1

这不仅适用于IE,也适用于其他浏览器。Firefox 3.6也可以观察到相同的行为。

由于HTML5只是一个工作草案,浏览器供应商尚未为这些元素创建默认样式表,因此默认情况下元素以内联方式显示。

如果要使用这些元素,请使用重置样式表,将这些元素设置为display:block,例如:

article, aside, footer, header, hgroup, nav, section {
    display: block;
}

从Chrome的用户代理CSS复制:)


如果您想获取更多信息,那么请阅读HTML5 beta版本发布说明。在这里没有明确说明IE9“支持”这些HTML5元素。您对支持的概念也不清晰 - 您所说的支持是什么意思?像上面那样的UA样式表?支持通用未指定元素?(IE9具有此功能,因此您无需使用小脚本在使用它们之前创建元素。)

HTML5规范只讨论了每个元素的语义,而没有涉及浏览器应如何显示它们。那么您期望支持HTML5的浏览器做什么呢?


我知道我可以使用reset!但如果这句话是真的,即IE 9支持HTML5,那么我不应该使用reset来使其正常工作 - Moon
正如pritaeas所说:“IE9仍处于测试版阶段,这可能也是原因。-pritaeas”-请记住我们谈论的是IE,仅仅因为它是第9个版本并不改变它仍然是IE的事实。 - balupton

1
根据《深入浅出HTML5》,最终版本的Internet Explorer 9不会有这个问题

所以我猜想你看到这个是因为IE9仍在测试阶段。没错,当它发布时,你不应该看到这个。

对于HTML5元素,包含显式的 display: block 可能是值得的。通常情况下,你永远不知道有人会在一个早期的HTML5浏览器中查看你的代码。


我已经在我的开发机上使用HTML5 Rest了...这个问题只是出于好奇! - Moon

0

IE 9支持一些HTML5功能,其他浏览器也是如此。HTML5尚未完成,IE 9也尚未完成,没有浏览器支持所有的HTML5功能。例如,我所知道的浏览器都不支持<style scoped><iframe seamless>

我不指望任何浏览器在一个版本中就支持所有的HTML5功能。HTML5有很多新功能,而且它仍处于不稳定状态。浏览器正在逐个实现功能,有时会使用前缀来避免后期不兼容,有时会在测试版或开发版中实现,以便在更广泛的发布之前进行测试。不可能一次性编写完美的规范,然后让每个人一次性实现所有功能;相反,功能是实验性地实现的,规范是围绕它们编写的,问题得到解决,规范得到更新,直到每个人都满意为止,并在不同浏览器之间以兼容的方式实现。在所有HTML5功能上实现所有这些还需要相当长的时间。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接