<sections>应该<articles>还是<articles>应该<sections>?</sections> </articles> </articles> </sections>

时间:2012-03-02 03:00:04

标签: html html5 semantic-markup

我正在阅读Mark Pilgirm的“Dive into HTML5”,在semantics section中,它讨论了HTML5如何引入<article><section>元素。它表示<section>代表一般文档或部分,而<article>代表一个独立的组合。无论如何,我都没有看到逻辑上语义的父子关系。

我尝试通过HTML5 Outliner运行以下代码,它似乎表明文档大纲是相同的,无论它们是如何嵌套的。

所以我的问题是:<section>是否应该嵌套在<article>内,<article>是否应该嵌套在<secion>内,或者它与语义无关观点?

<section><h1>section article?</h1>
  <article><h1>art 1</h1></article>
  <article><h1>art 2</h1></article>
  <article><h1>art 3</h1></article>
</section>

<article><h1>article section?</h1>
  <section><h1>sec 1</h1></section>
  <section><h1>sec 2</h1></section>
  <section><h1>sec 3</h1></section>
</article>

3 个答案:

答案 0 :(得分:11)

以任何一种方式嵌套都是完全可以接受的。虽然文档大纲没有区分<section><article>,但从语义的角度来看,它们是两个不同的东西。这就是将它们作为两个不同的语义元素引入的重点。

如果您的网页包含多篇文章,请使用第一个代码段。

当您的文章足够复杂以包含多个部分时,请使用第二个代码段。

如果两者都适合您的内容,您甚至可以将它们组合在一起,这样您的标记就像这样:

<section><h1>section article?</h1>
  <article><h1>art 1</h1>
    <section><h1>sec 1.1</h1></section>
    <section><h1>sec 1.2</h1></section>
    <section><h1>sec 1.3</h1></section>
  </article>
  <article><h1>art 2</h1>
    <section><h1>sec 2.1</h1></section>
    <section><h1>sec 2.2</h1></section>
    <section><h1>sec 2.3</h1></section>
  </article>
  <article><h1>art 3</h1>
    <section><h1>sec 3.1</h1></section>
    <section><h1>sec 3.2</h1></section>
    <section><h1>sec 3.3</h1></section>
  </article>
</section>

答案 1 :(得分:2)

HTML文档倾向于在文章中使用部分。似乎建议您始终使用<article>并使用每个<section>,以及该文章的一部分。 example they give涉及苹果:

<article>
 <hgroup>
  <h1>Apples</h1>
  <h2>Tasty, delicious fruit!</h2>
 </hgroup>
 <p>The apple is the pomaceous fruit of the apple tree.</p>
 <section>
  <h1>Red Delicious</h1>
  <p>These bright red apples are the most common found in many supermarkets.</p>
 </section>
 <section>
  <h1>Granny Smith</h1>
  <p>These juicy, green apples make a great filling for apple pies.</p>
 </section>
</article>

我没有看到很多示例<section>未包含<article>,但<article>中可能包含另一个<article>,例如博客将由一篇文章表示,然后对该博客的评论将由父文章内的另一篇文章表示。所以,这看起来就像你应该走向的方向。

所以,继续苹果示例:如果你想允许用户对每种类型的苹果发表评论,那么在这种情况下,你会在一个部分内有一篇文章,它仍然会在一篇文章中。


在深入研究并更加思考之后,这就是我提出的概括:

使用文章应保留用于“帖子”,例如博客,主题(及其后续帖子),评论等。任何可以拥有作者的内容应该使用<article>元素。

应保留使用部分来分隔您网站的各个部分,例如介绍(您的网站可能涉及的内容),某些新闻文章或用于评论的文章中的某个区域。任何东西都是某个东西的“部分”(实际上没有作者)。

答案 2 :(得分:1)

两者在语义上都是有效的

这完全取决于您希望如何解释页面。

如果您正在撰写博文,每篇文章都是<article>,并且在特别长的博文中,您可以将其与自己的{{1}分隔为逻辑<section>和其他任何需要的东西。

如果您正在编写研究页面,可以使用<h1>分隔目录,摘要,正文和附录。在主体(和附录)中,您可能有一个真正属于<sections>的特定部分。


如果您正在布置页面,我高度推荐以下格式:

<article>

虽然如果您不需要这么多<body> <div id="page"> <div id="page-inner"> <header id="header"> <div id="header-inner"> <!-- logo, site name, search, etc --> </div> </header> <nav id="nav"> <div id="nav-inner"> <ul> <li><a href="">Primary Nav</a></li> ... </ul> </div> </nav> <div id="wrapper"> <div id="wrapper-inner"> <div id="content"> <div id="content-inner"> <article> <header> <h1>Title</h1> <span class="author"></span> <time class="timestamp"></time> ... </header> <div class="content"> </div> <footer> ... </footer> </article> ... </div> </div><!-- end #content --> <div id="sidebar"> <div id="sidebar-inner"> <div class="module"></div> <!-- more sidebar widgets, modules, blocks, what-have-you --> </div> </div><!-- end #sidebar --> <!-- more columns if necessary --> </div> </div> <footer id="footer"> <div id="footer-inner"> <!-- copyright notice, footer menu, contact form, etc --> </div> </footer> </div> </div> </body> ,请保持简单:

<div>