为什么H2比H1大?

在下面的代码片段中,H2内容为什么比H1内容大?

<article> <section> <header> <h1>First Header</h1> </header> </section> <section> <header> <h2>Second Header</h2> </header> </section> </article> 

http://jsfiddle.net/abugp/

为什么在下面的代码片段中的H1内容更大,但不是上面的内容?

 <h1>First Line</h1> <h2>Second Line</h2> 

http://jsfiddle.net/59T43/

由于您没有指定任何样式,标题的大小由您的浏览器的默认样式表决定。 特别是,这意味着两个标题的相对大小可以根据观众的浏览器而变化。

在Chrome 33中看着你的小提琴,我确实看到了你描述的效果。 右键单击标题并select“检查元素”显示问题是由标题周围存在的<article>和/或<section>标记引起的。

Chrome的默认样式表通常包含以下规则:

 h1 { font-size: 2em } 

和:

 h2 { font-size: 1.5em } 

然而,前者的规则在<article>和/或<section>标签内被一些更具体的规则所覆盖,这大概是为了使标题的标题比正常的“整页”标题更小:

 :-webkit-any(article,aside,nav,section) h1 { font-size: 1.5em; } :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) h1 { font-size: 1.17em; } 

非标准:-webkit-any(...)select器大概只是匹配括号内列出的任何标签。 其效果是, <article><aside><nav><section>标签内的任何<h1>标题都被缩减为正常的<h2>标题的大小, 两个这样的标签内的任何<h1>进一步缩小,大概是一个正常的<h3>左右的大小。

至关重要的是,Chrome的默认样式表对于<h2>标签没有任何特殊的规则,所以它们总是(在Chrome 33中)以相同的尺寸显示。 因此,当被两个或多个<article>和/或<section>标签包围时, <h1>变得小于<h2>

这是因为文档风格的要求。 您可以在HTML 5.1文档@ 10.3.7节和标题中find详细信息

如果您不指定任何样式,浏览器将select其默认样式。 在第一个例子中,h1和h2在一个段的头部内,而在第二个例子中,它们在根段中。 那么行为是不同的。