为什么要使用HTML5语义标签而不是div

为什么使用Html5的语义标签,如headers section nav article而不是简单的div与首选的css到它。 我创build了一个网页,并使用这些标签,但他们没有区别于div。 他们的主要目的是什么? 这只是为了使用它或更多的标签适当的名称? 请解释我已经经历了许多网站,但无法find这些基本知识。

正如他们的名字所说,这只是为了语义的目的。 这是为了改进文件的自动处理。 自动处理发生的频率比你想象的要多 – 每个来自search引擎的网站排名都是通过对所有网站的自动处理得来的。

如果您访问一个网页,您作为人类读者可以立即(视觉)区分所有页面元素,更重要的是了解内容。

然而,机器是愚蠢的,不能这样做:设想一个networking爬虫或屏幕阅读器试图分析你的网页与div到处。 他们怎么知道你想成为导航或主要文章的文件的哪一部分,或者一些不那么重要的旁注? 他们可以通过使用一些通用标准来分析您的文档结构来进行猜测 ,这些标准是对特定元素的提示。 例如,内部链接的ul列表很可能是某种types的页面导航。 但是,如果使用nav元素,机器立即知道这个元素的目的是什么。

例如:你作为用户(阅读一个页面而没有看到实际的标记),不关心一个元素是否被包含在一个<i>或者<em>标记中。 可能在大多数浏览器中,它会以斜体文本的forms呈现,只要它突出文本以便轻松识别,就可以使用它。
然而,在语义方面有一个更大的区别:简单的意思是斜体 – 它是浏览器的表示提示,不一定包含更深的语义信息。 然而,这意味着强调,它在语义上表示一个重要的信息。 现在,浏览器不再受限于斜体的指令,而是可以以斜体或粗体,下划线或不同的颜色呈现。对于视觉受损的人,屏幕阅读器可以提高语音 – 无论哪种方法最适合强调这一重要信息的具体情况。

 // machine: okay, this structure looks like it might be a navigation element? <div class="some-meaningless-class"><ul><li><a href="internal_link">...</div> // machine: ah, a navigation element! <nav class="some-meaningless-class"><ul><li><a>...</nav> 

在HTML5Doctor上有一篇关于HTML5语义的小文章。

语义已经以某种forms成为html的一部分。 它可以帮助您了解页面上发生了什么。

早些时候,当几乎所有的东西都使用了<div>时候,我们仍然通过给它一个“语义”的类名或id名来实现语义。

这些标签有助于正确的结构和理解布局。

如果你这样做,

 <div class="nav"></div> 

而不是,

 <nav></nav> 

要么

 <div class="sidebar"></div> 

而不是,

 <aside></aside> 

没有什么错,但后者有助于为您提供更好的可读性,以及抓取工具,读者等。

在div标签中,你必须给出一个id,告诉它所持有的是什么types的内容,不pipe是body还是header或者footer等等。而在HTML5的语义元素的情况下,这个名字明确地定义了它是什么types的代码是网站的哪一部分。

语义元素是<header><footer><section><aside>