Why use HTML5 semantic tags like headers
, section
, nav
, and article
instead of simply div
with the首选 css
到吗?
我创建了一个网页并使用了这些标签,但它们与 div
没有区别。他们的主要目的是什么?
它只是在使用标签时使用适当的名称还是不止于此?
请解释。我浏览了很多网站,但找不到这些基础知识。
原文由 Rajaram Shelar 发布,翻译遵循 CC BY-SA 4.0 许可协议
牛津词典指出:
顾名思义,这些标签旨在改善网页的含义。良好的语义对文档的自动化处理起着重要作用。这种自动处理的发生频率比您想象的要高 - 每个网站在搜索引擎中的排名都来自于对所有网站的自动处理。
如果您访问(设计良好的)网页,作为人类读者,您可以立即(视觉上)区分所有页面元素,更重要的是 理解 内容。在左上角你可以看到公司标志,旁边是网站导航,有一个搜索栏和一些关于公司的文字,一个指向你可以购买的产品的链接,底部是一个法律免责声明。
然而,机器是愚蠢的,无法做到这一点:查看与您相同的页面,网络爬虫只会看到一张图片、一个锚标签列表、一个文本节点、一个输入字段和一张带有链接的图片。在底部有另一个文本节点。现在,他们怎么知道您打算将文档的哪一部分作为导航或主要文章,或者一些不太重要的脚注?他们可以通过使用一些通用标准分析您的文档结构来 _猜测_,这些标准是对特定元素的提示。例如
ul
内部链接列表很可能是某种页面导航,文档末尾的文本是必要的,但对日常查看者来说并不那么重要(法律免责声明)。现在想象一下,而不是一个普通的
div
,一个nav
元素将被使用——机器立即知道这个元素的目的是什么:现在文本里面有一个
main
标签——这显然是页面最重要的信息!在左边,那个文本节点,图像和锚节点都属于一起,因为它们被分组在section
标签中,在底部下面有一些文本在footer
元素(他们仍然不知道该文本的含义,但现在他们可以推断出它是某种细则)。示例:
作为用户(阅读页面但未看到实际标记),您不关心元素是否包含在
<i>
或<em>
标记中。在大多数浏览器中,这两个标签将以相同的方式呈现——作为斜体文本——只要它在周围的文本之间脱颖而出,它就达到了它的目的。但是,在语义方面有很大的不同:
<i>
表示斜体 - 它只是浏览器关于如何呈现它(斜体)的表象提示,并不一定包含更深层次的语义信息。<em>
表示强调 - 它表示一条重要的信息。现在浏览器不再受 斜体 指令的约束,而是可以将其呈现为斜体或粗体或下划线或不同的颜色……对于视障人士,屏幕阅读器可以提高声音 - 任何看起来最适合的方法一个特定的情况来强调这个重要的信息。最后的想法:
语义标签不是终点。元数据、本体、资源描述语言等更进一步,有助于连接不同网页之间的数据,甚至可以帮助创造新知识!
例如,维基百科在语义呈现数据方面做得非常糟糕。
https://en.wikipedia.org/wiki/Barack_Obama
https://en.wikipedia.org/wiki/Donald_Trump
https://en.wikipedia.org/wiki/Joe_Biden
这三 个人 都是在某个时间点担任 美国 总统 的人。
这三篇文章都包含一个显示这些信息的侧边栏,您可以比较它们(通过打开两个页面然后来回切换),但它们没有语义描述。相反,如果维基百科使用本体来描述一个人: http ://dbpedia.org/ontology/Person
你(和机器)现在不仅可以直接比较这三个(在动态生成的页面上!),你甚至可以创造新知识,例如显示美国所有总统的名单 - 很无聊但也很酷的东西,比如谁是当今世界的领导人,我们有多少位女性世界领导人,谁是最年轻的领导人,有多少种类型的领导人(总统/皇帝/女王/独裁者),谁服务时间最长,其中有多少人是身高超过175cm,棕色眼睛等。
总之,良好的语义非常酷(但在技术层面上也很难实现和维护)。