aside 标签可以放在文章的前面吗?

Can the aside tag be first in an article?

aside 标签可以放在 article 标签的第一个吗?

我一直在快速阅读 aside 标签的规范,但找不到任何可以向我解释的内容。

任何 HTML5 专家可以解释这是否是一个合法的结构?

<article>
 <aside>
   <h2>Aside Heading</h2>
   <p>
     Aside info
   </p>
 </aside>
 <h2>Article Heading</h2>
 <p>
   Article info
 </p>
</article>

或者 asidearticle 内容之后是否重要,如下所示:

 <article>
 <h2>Article Heading</h2>
 <p>
   Article info
 </p>
 <aside>
   <h2>Aside Heading</h2>
   <p>
     Aside info
   </p>
 </aside>
</article>

你的第二个片段是更好的选择——aside 最好不要放在文章标题之前。

原因是虽然 aside 作为 article 的第一个 child 不是无效的,但查看 the results of trying it in the HTML checker (validator) 你会发现它导致了这个警告:

Warning: Article lacks heading. Consider using h2-h6 elements to add identifying headings to all articles.

该警告不是 HTML 检查器错误。 the HTML outline algorithm such as https://h5o.github.io/ 的其他实现也会将该文章视为缺少标题。

显然那里有一个标题——<h2>Article Heading</h2>——但是由于 HTML 大纲算法的要求(这看起来很奇怪……),如果 aside 元素在article 的标题,导致大纲算法将 article 视为缺少标题。

因此,以大纲算法更满意并避免 HTML 检查器发出警告的方式标记您的内容的一种选择是:

<article>
 <h2>Article Heading</h2>
 <aside>
   <h2>Aside Heading</h2>
   <p>
     Aside info
   </p>
 </aside>
 <p>
   Article info
 </p>
</article> 

也就是说,只需将 <h2>Article Heading</h2> 移到 aside 之前,但保持其他所有不变。

另一种方法是按照您在问题示例中所做的操作:将 aside 移动到 article 的末尾。如果您查看 the results of trying that second example from the question in the HTML checker,您会发现它不会导致任何警告和错误。