使用部分元素和标题构建网站的内容

时间:2012-05-04 09:18:06

标签: html5 semantic-markup html-heading

我已经知道在讨论段元素的使用之外有很多线程 - 我已经阅读了很多它们,到目前为止我得出了以下结论:

A< section> element应该用于包装可以存储为单个数据库记录的内容。 (根据HTML5doctor)并且标题应该在里面 section元素(尽管在数据库中我不会将标题存储在与内容相同的列中...)

到目前为止这么好,我重新组织了我的网站的结构,并通过http://gsnedders.html5.org/outliner/进行了分析 - 但令人惊讶的是它忽略了我的h1,h2,...标题顺序(在某处我读到了特殊元素重置了标题左右......?:S)这让我很生气。

到目前为止,我已经有了一个类似的结构(为了样式目的而跳过一些div):

<header>
    <section>
        h1 // title of my page --> h1
    </section>
    <section>
        <nav>...</nav>
    </section>
</header>
<div role="main"> // don't use section for your website's main content
    h2 // main content
    <section>
        h3 // main content's sub heading
    </section>
    <section>
        h4 // sub heading of main content's sub heading
            h5
            h5
    </section>
    <section>
        h3 // another main content's sub heading
    </section>
</div>
<aside>
    <section>
        h3 // about me
    </section>
</aside>

而不是预期的大纲:

title of my page
    navigation
    main content
        main content's sub-headings, etc.
    about me

我得到了:

main content
    title of my page
    navigation
    main content's sub entries
    about me

当然我可以将我的标题包含在某些部分元素中以重置此计数器,但我永远不会将整个主要内容存储为单个数据库条目 - 所以这将是语义元素的非语义用法,这使得整个工作有点多余。

我是否错过了section元素或嵌套标题的要点?任何建议如何处理这种行为(这在理论上听起来很棒,但在实践中似乎表现得很奇怪......)

编辑:我决定坚持使用“关于可能是RSS项目的元素的文章”规则,因为它对我来说更有意义,并继续使用section元素来保持主要内容与导航不同等(如下所述)

1 个答案:

答案 0 :(得分:1)

节元素

我不确定我是否同意您的章节定义。从HTML5规范中可以看出

  

section元素表示通用文档或应用程序部分。

接着说

  

鼓励作者使用article元素而不是section元素,因为联合元素的内容是有意义的。

因此,如果您要将某些内容存储为“单个数据库条目”,我认为应该使用一篇文章代替该部分。另请参阅this部分元素的DO和DON'T的良好列表。

文档大纲

就您的文档大纲而言,由于您没有包含任何结束标记,因此很难判断发生了什么。你能发布一个完整,有效的HTML示例吗?

我建议您阅读Mozilla Developers Network上的HTML5文档概述。以你的例子为例,在我认为它们应该是的地方添加结束标记,并根据这篇文章,我会提出HTML

<doctype html>
<header>
    <h1>title of my page</h1>
</header>
<nav>My Nav</nav>
<article id="main-content">
    <h2>main content</h2>
    <section>
        <h3>main content's sub heading</h3>
        <section>
            <h4>sub heading of main content's sub heading</h4>
            <section>
                <h5>a sub, sub heading of main content's sub heading</h5>
            </section>
        </section>
    </section>
    <section>
        <h3>another main content's sub heading</h3>
     </section>
</article>
<aside>
    <h3>about me</h3>
</aside>

这会产生轮廓

  1. 我的页面标题
    1. Untitled Section(这是导航)
    2. 主要内容
      1. 主要内容的子标题
        1. 主要内容子标题的子标题
          1. 主要内容子标题的子标题
    3. 另一个主要内容的子标题
    4. 关于我
  2. 这是你期望的大纲吗?

    章节标题

    请注意,您不必使用h1h2h3等,HTML5大纲将确定什么是标题,基于深度的子标题嵌套您的文章或部分。你可以,如果你已经到处,可以在任何地方使用h1(尽管不这样做),大纲仍然会产生上述轮廓。