将 <main> 或 <article> 用于同时也是文章的页面的主要内容是否更正确?

Bor*_*era 7 html semantic-markup

我目前正在清理我的个人博客,我正在努力使 HTML 正确遵守 HTML 标准。博客结构很简单。我有一个链接到博客文章的主页和每个博客文章的页面。

对于博客文章页面。我不确定是否应该使用<main>or<article>标签来包装所有内容。

我要么用

<html>
<body>
  { heading, navigation, etc. }
  <main>
    <h1>{title}</h1>
    <time datetime="{publish date}">{human readable publish date}</time>

    {content}
  </main>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

或者

<html>
<body>
  { heading, navigation, etc. }
  <article>
    <h1>{title}</h1>
    <time datetime="{publish date}">{human readable publish date}</time>

    {content}
  </article>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

如果我读的HTML规范<article>正确使用<main>似乎是更好的选择,因为<article>是为了分离HTML文档的独立自足的部分,而<main>意在表示在文档的文档或肉的主要部分。

我犹豫的原因是因为<article><time>元素一起使用以允许我指定帖子的发布时间。

来自 MDN(https://developer.mozilla.org/en-US/docs/Web/HTML/Element/article):

元素的发布日期和时间可以使用元素的 datetime 属性来描述。请注意, 的 pubdate 属性不再是 W3C HTML 5 标准的一部分。

uno*_*nor 8

(请注意,您的两个示例创建了不同的文档大纲。)

两者都用。这些元素用于不同的目的并且可以很好地协同工作。

<main>
  <article>
  </article>
</main>
Run Code Online (Sandbox Code Playgroud)

如果由于某种原因您只能使用一个元素,请使用main,因为使用标题会创建一个隐式部分(在哪里article可以使此部分显式),并且如果是最近的部分,则所有article相关功能(如addressbookmark)也可以使用body. 请注意,不再有time-related 功能article(早期的 HTML5 草稿具有该pubdate属性,该属性提供了这样的功能,但它已被删除)。

  • 使用“main”元素就足够了:“当页面的主要内容(即不包括页脚、页眉、导航块和侧边栏)都是一个独立的组合时,该内容可以用“article”来标记,但在这种情况下,它在技术上是多余的(因为不言而喻,该页面是一个单一的组合,因为它是一个单一的文档)。” 来源:[HTML 标准:文章元素](https://html.spec.whatwg.org/multipage/sections.html#the-article-element) (2认同)