在HTML中<section>和<div>之间有什么区别?我们不是在这两种情况下都定义了节吗?


当前回答

注意不要过度使用section标记来替换div元素。section标记应该在正文上下文中定义一个重要区域。从语义上讲,HTML5鼓励我们这样定义文档:

< html > <头> < / >头 身体< > <标题> < /头> < >节 <标题> < / h1 > < div > < span > < / span > < / div > < div > < / div > < / >节 <页脚> < /页脚> 身体< / > < / html >

This strategy allows web robots and automated screen readers to better understand the flow of your content. This markup clearly defines where your major page content is contained. Of course, headers and footers are often common across hundreds if not thousands of pages within a website. The section tag should be limited to explain where the unique content is contained. Within the section tag, we should then continue to markup and control the content with HTML tags which are lower in the hierarchy, like h1, div, span, etc.

在大多数简单的页面中,应该只有一个section标记,而不是多个。还请考虑还有其他有趣的HTML5标签,它们与section类似。考虑在文档流中使用article、summary、aside等。如您所见,这些标记进一步增强了我们定义HTML文档主要区域的能力。

其他回答

在HTML5标准中,<section>元素被定义为一个相关元素块。

<div>元素被定义为一个子元素块。

这只是一个观察,还没有发现任何文件可以证实这一点

如果一个section包含另一个section,内部section的h1-header将以比外部section的h1-header更小的字体显示。 当使用div而不是section内部div h1-header显示为h1。

<section>
  <h1>Level1</h1>
  some text
  <section>
    <h1>Level2</h1>
    some more text
  </section>
</section>

二级标题显示的字体比一级标题小。

当使用css为h1标题上色时,内部h1也被上色(行为与常规h1相同)。 在火狐18、IE 10和Chrome 28中也是如此。

<section>意味着里面的内容是分组的(即与单个主题相关),并且应该作为页面大纲中的一个条目出现。

<div>,另一方面,除了在它的class、lang和title属性中找到的任何含义之外,没有传达任何含义。

所以不:使用<div>没有在HTML中定义一个节。

来自规范:

< >节

The <section> element represents a generic section of a document or application. A section, in this context, is a thematic grouping of content. Each section should be identified, typically by including a heading (h1-h6 element) as a child of the <section> element. Examples of sections would be chapters, the various tabbed pages in a tabbed dialog box, or the numbered sections of a thesis. A Web site’s home page could be split into sections for an introduction, news items, and contact information. ... The <section> element is not a generic container element. When an element is needed only for styling purposes or as a convenience for scripting, authors are encouraged to use the <div> element instead. A general rule is that the <section> element is appropriate only if the element’s contents would be listed explicitly in the document’s outline.

(https://www.w3.org/TR/html/sections.html # the-section-element)

< div >

<div>元素没有任何特殊含义。它代表它的子结点。它可以与class、lang和title属性一起使用,以标记一组连续元素的公共语义。 注意:强烈建议作者将<div>元素视为没有其他合适元素时的最后手段。使用更合适的元素,而不是<div>元素,可以使读者更好地访问,并且使作者更容易维护。

(https://www.w3.org/TR/html/grouping-content.html # div元素)

部分是最相关的地标导航辅助技术。要出现在文档大纲或地标列表中,它们需要一个名称,可以通过aria-label, aria- labledby或title来分配:

<section aria-labelledby="s3-h2">
  <h2 id="s3-h2">Introduction</h2>
  …

例如,Mac上的VoiceOver可以提供一个大纲,直接导航到该部分。

section标记为html提供了更具语义性的语法。Div是节的通用标记。 当你为适当的内容使用节标签时,它也可以用于搜索引擎优化。Section标记还使HTML解析变得容易。更多信息,请参考。http://blog.whatwg.org/is-not-just-a-semantic

<div> -我们都知道并喜欢的通用流容器。它是一个块级元素,没有额外的语义含义(W3C:Markup, WhatWG)

<section> -通用文档或应用程序部分。A通常有一个标题(标题),也可能有一个页脚。它是一大块相关内容,比如一篇长文章的一个小节,页面的一个主要部分(比如主页上的新闻部分),或者web应用的标签界面中的一个页面。(W3C:标记,WhatWG)

我的建议: Div:使用较低版本(我认为4.01仍然)HTML元素(许多设计师处理)。 Section:最近出现的(html5) HTML元素。