HTML 语义化标签,顾名思义,即有一定含义的 HTML 标签。
通常,使用没有语义的 <div> 等标签也能实现同样的页面效果。但语义化的标签使得程序(和人,如果你在阅读 HTML 代码)能够更准确地理解 HTML 页面的结构。这给了搜索引擎、读屏软件、聚合阅读器等程序更有针对性地处理页面中内容的可能。
这是某博客框架默认主题下展示的一篇文章,这个主题模板就使用了许多的语义化标签。如果程序按照语义来分析这个页面,那么 <header> 就能够很快被识别为标题部分,<footer> 则应该是包含作者、版权等信息的页脚;<section> 中的内容应当作为独立的部分处理,而 <article> 表明这个部分应当是一篇文章……当这些标签与常用的表示段落的 <p> 、表示不同层级标题的 <h1> - <h6> 标签(是的,这些常常用到的标签也是有特殊含义的)一同使用时,程序就不容易在判断页面结构时失误了。
一些语义化标签有着自己的默认样式,或是影响着其他元素的样式。这使得网页在 CSS 样式失效的极端情况(几乎不可能)下仍能呈现出较为易读的布局。当使用浏览器插件屏蔽所有自定义样式后,这篇文章的排版还是足够清晰的。
虽然这些标签自带了一些样式,但如果只是为了调整字号或是粗细字体,而相关内容并不符合标签的含义,那么 CSS 才是应该使用的工具。<b> <i> <u> 的最新定义也不再建议将这些标签像 Word 里的加粗、斜体、下划线功能一样仅仅为了调整文本样式而使用了,这些样式都应该通过 CSS 实现。除此以外,还有一些关于语义化标签的建议,如 <h1> - <h6> 标签应按等级依次使用,而不应(挑选喜欢的字体大小)跳着使用。
这是来自某个资讯平台的一篇资讯文章,其中用到了大量 <div> 元素,仅有正文文本使用代表段落的 <p> 元素。这种情况下,程序只能识别到一些零散的段落,而无法得知他们之间的关系以及其他更多的信息。相比于正确使用语义化标签的前者,这些 <div> 元素显然难以被程序所理解。
值得一提的是,由于语义化标签有着特殊的含义,因此正确使用就显得尤为重要。如果不能确定该使用哪个标签,为了避免让程序产生误解,那还是使用普通的 <div> 标签吧。