什么是语义化
首先,我们都知道HTML是一门超文本标记语言,在页面构成中起到的是结构支撑的作用,我们可以使用各种各样的HTML标签来搭建网页。 在很多情况下,使用不同的标签,最终呈现出来的页面效果都是大差不差的。
但实际上,除了<div>和<span>是无语义化标签以外,HTML标签和属性都是具有语义的,标签和属性背后的语义规定了它们的含义以及使用情境。
面向语义而不是样式来进行网页开发,根据W3C规范正确使用有意义的标签和属性,使得HTML标签和文档的结构有一层逻辑联系,从而增强文档的可识别性,这就是语义化。
语义化的好处
语义化最大的好处就是增强文档的可识别性,这个可识别性包括对人和对机器两个方面。
- 对机器而言:
- 提高了Web应用的可访问性,语义化更强的文档意味着工具可以更容易解析文档,从而完成一些工具层面的分析操作。 比如更有利于网页的SEO、代理或者爬虫工具分析网页结构等等。 2.使得浏览器更容易分析网页代码,道理同上。
- 对人而言:
- 提高了代码的可读性和可维护性,方便后期维护页面时能快速定位到相应的位置;
- 相当于团队项目内的一个隐式标准,有利于提高项目风格的一致性;
- 提高了Web应用的无障碍性,对于需要借助工具来上网的视觉障碍人士而言,语义化有利于机器识别,也是在有利于他们识别。
语义化的现状&怎么做到语义化
现状
语义化的推行并不是很乐观。
记忆复杂多样的标签名需要时间成本,因此很多开发者会选择给标签元素定义带语义的类名或id名,以达到增强文档可识别性的目的; 通过meta标签关键字、多使用内链等方法也可以有利于SEO,对于国内搜索引擎而言,花钱的收益比语义化更高; 提高无障碍性需求的优先级很低...
尽管语义化看上去收益并不是很高,但是理解HTML标签的语义并面向语义搭建页面依然是具有深远意义的,也是开发者素养的体现。
可行性
为了更好地做到语义化开发,有以下几点:
- 正确理解和记忆HTML标签和属性的语义,在实际开发中加以运用;
- 关注文档结构,多思考这块内容用什么标签合适,而不是堆砌div标签;
- 不使用可视化工具生成代码。
经典例子:<strong> 和 <b>的区别是什么,<i> 和 <em>的区别是什么?
<strong>和<b>都能让文本加粗显示,但是它们都不是样式标签,即没有语义的加粗应该通过CSS的font-weight属性来实现而不是<strong>和<b>标签。
<strong>在语义上表示需要着重强调的文字;<b>在语义上表示希望引起用户注意的文字。
<i>和<em>都能让文本以斜体显示。
<i>表示需要和普通文字区别开的引用文字,比如文章里的术语;<em>是着重元素,用于标记需要被着重阅读的文字,表示语气和语境上的强调。