非常简单快速的良好实践怀疑。正如W3C所述,标题和页脚标记应该等同于其父部分,其中每个标题或 footer 元素应该只有一个父部分,因此浏览器会理解那些特定的标题和页脚标记作为页面特定部分的页眉和页脚。
我的问题是,考虑到这一点, body 可以被视为部分,让我们做正确的事情:
<body>
<header></header>
<footer></footer>
<section>
<header></header>
<footer></footer>
</section>
</body>
或者部分应该始终是一个真正的部分,正确的编码实践是这样的:
<body>
<section>
<header></header>
<footer></footer>
</section>
<section>
<header></header>
<footer></footer>
</section>
</body>
有任何建议吗?
答案 0 :(得分:1)
documentation on sectioning content对此有点不清楚。分割内容的唯一元素
定义标题和页脚范围的内容
是article
,aside
,nav
和section
。但是,blockquote
,body
,details
,fieldset
,figure
和td
为sectioning roots,可以拥有自己的<body>
<header>
...
</header>
<footer>
...
</footer>
</body>
概述
页面上还有一个例子
<header>
...所以这一切都表明你很高兴与<footer>
中的<body>
和<section>
<header>head</header>
<fieldset>
<header>head2</header>
</fieldset>
</section>
一起使用,事实上这与你有另一个部分不同因为身体上的那些将在轮廓上高于兄弟部分。
根据规范要记住的另一件事是,那些“切片根”元素不会影响其祖先的轮廓(尽管它们会低于祖先的根)。
例如:
<fieldset>
在这种情况下,“head”和“head2”在文档大纲中处于同一级别,因为<section>
是一个分段 root 。如果它是{{1}},它将嵌套在“head”节点中。您可以确认此with this handy web utility
答案 1 :(得分:1)
W3C HTML5 CR表示body
元素是sectioning root,因此没有理由将其内容包装在section
元素中。它甚至会产生误导,因为它描述了section
元素,因此它“代表文档或应用程序的通用部分。在这种情况下,一个部分是内容的主题分组,通常带有标题。“将所有内容组合成一个组是毫无意义的。
另一方面,没有证据表明浏览器实际上至少关注section
,header
等的“语义”。现代浏览器只有一些默认的渲染规则,这是所有;较旧的浏览器会忽略这些标记,只是呈现内容,就像标记不存在一样。