有一次看到有人说面试的时候被问到了这个问题,当时我也是只知道这两对属性显示的样式是一样的,具体有什么区别我也不太清楚。
今天我就来和大家分享一下我的学习成果,首先,大家应该知道的是,标签可以分为两类,一类是基于内容的样式,还有一种是物理样式。
1.基于内容的样式
所谓的基于内容的样式就是指那些不仅用于改变文本样式,还可以起强调的作用,这个强调的意思是指能够让搜索引擎更容易找到的一种强调,主要是为了强调,样式的改变只是其次,这些标签包括
<abbr> | 定义一个缩写,即鼠标放在缩写的文本上可以显示完整的内容 |
<acronym> | 定义首字母缩写,这个和上面的很像,但是主要用来定义首字母的的缩写 |
<cite> | 通常用来表示它所包含的文本对某个参考文献的引用,比如书籍或杂志的标题 |
<code> | 用于表示计算机源代码或其他机器可以阅读的文本内容,与<tt>的表现形式一样 |
<dfn> | 用来标记对那些特殊短语或术语的定义,尽量少用 |
<em> | 用来告诉浏览器其中的文本是强调的内容,表现形式为斜体,和标签<i>的样式相同 |
<strong> | 也是用来表示强调的内容,语气比<em>更强,表现为粗体,和<b>的表现形式相同 |
<kbd> | 定义键盘文本 |
<samp> | 用来表示一段用户应该对其没有什么解释的文本字符,这个标签很少使用 |
<var> | 用来表示变量的名称,通常与<code>和<pre>一起使用,用来表示计算机代码,表现形式也为斜体 |
2.物理样式
所谓物理样式就是指只关注改变文本外观的一些标签,没有强调作用。这些标签一般都不建议使用,因为w3c的标准更趋向于将文本内容和样式分开,即提倡用html写文本内容,用css改变文本样式,这样的话物理样式都有可能被css代替,一般的物理样式包括:
<b> | 规定粗体文本 |
<i> | 规定斜体文本 |
<big> | 放大文本 |
<small> | 缩小文本 |
<strike> | 用来加删除线 |
<sub> | 用来加下标 |
<sup> | 用来加上标 |
<tt> | 呈现类似打字机或等宽文本的效果 |
知道了以上的两种样式过后,应该就可以理解<em>与<i>,<strong>与<b>之间的区别了,尽管他们在网页上的表现形式是一样的,但是<em>和<strong>增加了强调的意思,可以有利于搜索引擎的搜索,而且<strong>比<em>的强调效果更好。
综上所述,一般在body里建议用<em>和<strong>,因为样式的改变就交给css吧。