创建明确的部分结构;不要忘记那<main>
不是切片节点。在您的代码示例中,'Header'<h1>
是根节点( level#1 )并隐式分配了两个 'Article' 子节点( level#2 )。“主要内容”<h1>
与主要“标题”处于同一级别(级别#1)并包含其余的隐式节节点;'article-s' 和最后一个 'section' 处于同一级别( level#2 )。这就是大纲查看您的结构的方式(bare-boned-old-style-implicit):
<doctype html>
<h1>main-level</h1>
<h2>descendant</h2>
<h2>descendant</h2>
<h1>main-level</h1>
<h2>descendant</h2>
<h2>descendant</h2>
<h2>descendant</h2>
<h2>descendant</h2>
<h2>descendant</h2>
为避免混淆,建议明确定义所需的节结构:
<doctype html>
<header>
<h1>root</h1>
<section>
<h1>Header</h1>
<article><h2>Article</h2></article>
<article><h2>Article</h2></article>
</section>
</header>
<main>
<section>
<h1>Main content</h1>
<article><h2>Article</h2></article>
<article><h2>Article</h2></article>
<article><h2>Article</h2></article>
<article><h2>Article</h2></article>
</section>
</main>
<section>
<h1>Sidebar</h1>
</section>
这样“标题”、“主要内容”、“侧边栏”处于同一级别(级别#2);并且是主“根”节点(级别#1)的子节点。将<header>
和<main>
正在分割节点,你会得到你提到的大纲,结构将转化为这个:
<doctype html>
<section>
<h1>Header</h1>
<article><h2>Article</h2></article>
<article><h2>Article</h2></article>
</section>
<section>
<h1>Main content</h1>
<article><h2>Article</h2></article>
<article><h2>Article</h2></article>
<article><h2>Article</h2></article>
<article><h2>Article</h2></article>
</section>
<section>
<h1>Sidebar</h1>
</section>
但它们不是,我建议您明确指定部分。顺便说一句,请注意,当明确使用部分(而不是标题)时,其作用是定义文档结构(即大纲)而不是旧样式<h1>
- <h6>
,这是示例:
<doctype html>
<h6>Grand-Grand</h6>
<!-- notice top level h6 -->
<section>
<h6>Grand</h6>
<article><h1>Minor</h1></article>
<!-- and h1 at the bottom of outline tree -->
<article><h1>Minor</h1></article>
</section>
<section>
<h6>Grand</h6>
<article><h1>Minor</h1></article>
<article><h3>Minor</h3></article>
<article><h4>Minor</h4></article>
<article><h2>Minor</h2></article>
</section>
<section>
<h5>Grand</h5>
</section>
请注意,节中的第一个标题如何仅包含包含节的名称(由节元素组成),而结构由明确的节定义决定(这意味着您可以<h1>
在整个地方以任意顺序使用 s 或任何其他标题,而不会影响大纲结构)。与以下相同:
<doctype html>
<h1>Grand-Grand</h1>
<section>
<h1>Grand</h1>
<article><h2>Minor</h2></article>
<article><h2>Minor</h2></article>
</section>
<section>
<h1>Grand</h1>
<article><h2>Minor</h2></article>
<article><h2>Minor</h2></article>
<article><h2>Minor</h2></article>
<article><h2>Minor</h2></article>
</section>
<section>
<h1>Grand</h1>
</section>
,就 html5 大纲而言。我猜它是专门为 htm 解析器实现的(几乎没有新的“视觉冲击”),这样他们就可以更准确地“识别”页面上的内容并提供更流畅的体验并帮助残疾人。Chrome 有很好的html5 大纲扩展;它将图标放置在地址栏的右侧,并在单击时显示 pade 的轮廓。