旁边的标签可以在文章中首先出现吗?

时间:2017-03-13 13:51:32

标签: html5 w3c-validation semantic-markup

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>

1 个答案:

答案 0 :(得分:3)

您的第二个代码段是更好的选择 - aside最好不要在文章标题之前。

原因是虽然aside作为article的第一个孩子并非无效,但请查看the results of trying it in the HTML checker (validator),您会看到它会导致此警告:

  

警告:文章缺少标题。考虑使用h2-h6元素为所有文章添加标识标题。

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

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

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

article

也就是说,只需在<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的末尾。如果您查看the results of trying that second example from the question in the HTML checker,您会看到它不会导致任何警告而且没有错误。