我可以使用类似的东西<section id="wrapper"></section>
,但是因为我很迂腐,使用<wrapper></wrapper>
作为我的 html 元素有什么问题吗?
我正在使用 html5 shiv 和modernizer,它确实工作得很好但是我只是想知道这样做是否有什么特别的错误。
我可以使用类似的东西<section id="wrapper"></section>
,但是因为我很迂腐,使用<wrapper></wrapper>
作为我的 html 元素有什么问题吗?
我正在使用 html5 shiv 和modernizer,它确实工作得很好但是我只是想知道这样做是否有什么特别的错误。
好吧,HTML 中没有wrapper
元素,所以是的,那是错误的。此外,该<section>
元素具有特定的语义含义,不应用作通用元素包装器。具体来说,它表示文档大纲中的一段内容,可能带有相应的页眉和页脚。<div>
多年来一直在做包装工作。
创建您自己的标签会给您一个无效的 HTML 5 文档。它可能有效,但有广泛的影响(从解析器的期望到浏览器的默认样式表)。
正如其他答案所述,这两者都不是很好的用途section
。
我建议在div
. 通过指定一个类名,您是在声明该元素(尽管有些通用)属于该类型(几乎就像在面向对象的语言中实例化一个类的实例一样)。
您还可以添加自定义数据属性以提供有关元素的更多信息。这些是完全有效的,并且是(强调我的):
...旨在存储页面或应用程序私有的自定义数据, 没有更合适的属性或元素。
<div class="wrapper" data-custom="foo"></div>
<section>
元素代表页面中的一个部分,而不是您的布局。这非常重要,包括我在内的大多数 HTML5 初学者都感到困惑。
让我用另一个例子来说明你错在哪里:
<section id="banner">
</section>
横幅是布局的一部分,而不是网页内容。因此它们没有任何部分。它们必须<div>
像以前在 HTML 4 中那样表示。
<section id="wrapper">...</section>
同样是错误的,因为包装器纯粹是特定于布局的任务,因此它不代表您页面上的任何特定内容。<sections>
应该始终代表差异化的内容,而不是其他内容。
这是 HTML5 的示例,可以认为是有效的。
<div id="wrapper">
<section id="mainArticle">
</section>
<section id="aboutAuthor">
</section>
<aside id="relatedArticles">
</aside>
</div>