让我们说,我总是想要在项目中使用main
元素来表示不同的页面类型。其中一种页面类型只是一个产品页面,带有标题和一些部分。哪个变体在语义上是正确的:
A
<body>
<header>
...
</header>
<main>
<header>
<h1>...</h1>
<img />
</header>
<section>
<h1>...</h1>
<p>...</p>
</section>
<section>
<h1>...</h1>
<p>...</p>
</section>
</main>
<footer>
...
</footer>
</body>
乙
<body>
<header>
...
</header>
<main>
<article>
<header>
<h1>...</h1>
<img />
</header>
<section>
<h1>...</h1>
<p>...</p>
</section>
<section>
<h1>...</h1>
<p>...</p>
</section>
</article>
</main>
<footer>
...
</footer>
</body>
我会说A
不正确。根据工作草案:
header
元素表示其最近的祖先切片内容或切片根元素的介绍性内容。
main
元素不是对内容进行分区,对文档大纲没有影响。
因此body > main > header
中的A
代表body
的介绍内容,它是分区根元素。
对于那些可能会问的人,为什么在没有B
的情况下不使用main
。这有技术原因要么我总是使用main
。还有其他页面类型,主要内容中包含多篇文章。
答案 0 :(得分:0)
示例 A 不正确。我可以想到没有示例 A 有意义的内容。
你给出了正确的解释为什么会这样:
header
属于“最近的祖先切片内容或切片根元素”。
在示例 A 中,两个header
元素都属于body
(=最近的切片根元素),但只有第一个header
属于它,而第二个header
应该属于产品。
由于main
不是分段内容元素,因此您需要在此处使用一个。 article
似乎是正确的选择(因为它的所有内容都是关于产品的),所以示例 B 看起来很好。