23 回答
它们对普通的网络浏览器渲染引擎具有相同的效果,但它们之间存在根本区别。
正如作者在讨论列表帖子中所写:
考虑三种不同的情况:
- 网络浏览器
- 盲人
- 手机
“Bold”是一种风格——当你说“bold a word”时,人们基本上知道这意味着在字母周围添加更多,比如“ink”,直到它们在其他字母中更加突出。
不幸的是,这对盲人来说毫无意义。在手机和其他 PDA 上,文本已经是粗体了,因为屏幕分辨率非常小。你不能在不搞砸的情况下加粗一个粗体。
<b>
是一种风格——我们知道“粗体”应该是什么样子。
<strong>
然而,它表示应该如何理解某事。“强”在浏览器中可能(并且经常)意味着“粗体”,但它也可能意味着像 Jaws(盲人)这样的口语程序的语气较低或用下划线表示(因为你不能加粗粗体)在 Palm Pilot 上。
HTML 从来都不是关于样式的。搜索“ Tim Berners-Lee”和“语义网”。 <strong>
是语义的——它描述了它所包围的文本(例如,“这个文本应该比你显示的其余文本强”),而不是描述它所包围的文本应该如何显示(例如,“这个文本应该是粗体”)。
<b>
并且<i>
是明确的 - 它们分别指定粗体和斜体。
<strong>
并且<em>
是语义的 - 它们指定封闭的文本应该以某种方式“强”或“强调”,通常是粗体和斜体,但允许通过 CSS 控制实际样式。因此,这些在现代网页中是首选。
<strong>
并<em>
为您的文档添加额外的语义含义。碰巧它们还为您的文本提供了粗体和斜体样式。
你当然可以用 CSS 覆盖他们的样式。
<b>
<i>
另一方面,仅应用字体样式,不应再使用。(因为您应该使用 CSS 进行格式化,并且如果文本确实很重要,那么您可能会使其“强”或“强调”!)
希望这是有道理的。
以下是定义的摘要以及建议的用法:
<b>
...为实用目的而引起注意的一段文本,但没有传达任何额外的重要性,也没有暗示其他声音或情绪,例如文档摘要中的关键词、评论中的产品名称、评论中的可操作词交互式文本驱动软件,或文章 lede。
<strong>
...现在代表重要性而不是强调。
<i>
...一段以另一种声音或语气表达的文本,或以其他方式偏离正常散文以指示不同质量的文本,例如分类名称、技术术语、来自另一种语言的惯用短语、思想,或西方文本中的船名。
<em>
...表示强调。
(这些都是来自 W3C 来源的直接引用,我强调了。参见:https ://rawgithub.com/whatwg/html-differences/master/Overview.html#changed-elements和http://www.w3.org /TR/html401/struct/text.html#h-9.2.1为原件)
虽然<strong>
并且<em>
当然在语义上更正确,但似乎有明确的正当理由将<b>
and<i>
标记用于客户编写的内容。
在此类内容中,单词或短语可能会加粗或斜体,而我们通常无法分析这种加粗或斜体的语义推理。
此外,这样的内容可以指代粗体和斜体字和短语以传达特定含义。
一个例子是一个英语考试问题,它指示学生替换粗体字。
<em>
并且比 和消耗<strong>
更多的带宽。<i>
<b>
它们还需要更多的输入(如果不是自动生成的)。
它们还会用更多的文本使编辑器屏幕变得混乱。我似乎记得程序员喜欢较小的源文件,如果它们相同的话。(让我们成为现实,它们是相同的。是的,存在“技术”(<i>咳嗽</i>,咳咳,对不起)差异,但这主要是假的。)
使用上述任何标签,您可以使用样式表自定义它们的显示方式,如果您需要它们看起来不同于其默认呈现。
我将在这里冒险历史和实际的热门话题:
是的,根据规范,<strong>
在 HTML4 中具有语义含义,并且<b>
具有严格的表示含义。
是的,当 HTML5 出现时,为b
和引入了稍微不同的新语义含义i
。
是的,W3C 推荐——基本上——TL、DR;不要使用 b 和 i。
您应该始终牢记 ab 元素的内容可能并不总是粗体,而 i 元素的内容可能并不总是斜体。实际样式取决于 CSS 样式定义。您还应该记住,粗体和斜体可能不是某些语言内容的首选样式。如果有更具描述性和相关性的标签可用,则不应使用 b 和 i 标签。
但:
现实世界的互联网有大量现有的 HTML,这些 HTML 永远不会更新。现实世界的互联网必须考虑在庞大的软件网络和 CMS 系统之间生成、复制和粘贴的内容,这些系统都有不同的开发团队,并且建于不同的时代。
因此,如果您正在编写 HTML 或构建一个为其他人编写 HTML 的系统——当然——肯定使用<strong>
而不是<b>
表示“强烈强调”,因为它在语义上更正确。
但实际上,实际情况是 和 的语义和文体意义随着时间的推移已经出于必要<strong>
而合并。<b>
如果我正在构建一个允许粘贴任何样式文本的 CMS,我需要为正在粘贴<b>
并表示“强烈强调”的人以及正在粘贴<strong>
并表示“使此文本加粗”的人进行计划。这可能不是“正确的”,但这就是现实世界此时此刻的运作方式。
因此,如果我正在为该网站编写样式表,我可能最终会编写一些如下所示的样式:
b,
strong {
font-weight: 700;
/* ... more styles here */
}
i,
em {
font-style: italic;
/* ... more styles here */
}
或者,我将依赖浏览器默认设置,它与我所知道的每个现代浏览器中的上述代码执行相同的操作。
或者,我可能是数以百万计的使用normalize.css 的站点之一,它注意确保 b 和 strong 被视为相同。
世界上已经有如此庞大的 HTML 海洋可以满足这种期望,我只是无法想象它b
会被贬低,strong
或者浏览器会在默认情况下开始以不同的方式显示它们。
就是这样了。这是我对语义、历史和现实世界的热门看法。b/i 和 strong/em 是一样的吗?不会。在现代文明崩溃之前,它们可能都存在并在几乎所有情况下都被视为相同吗?我想是的。
b或i表示您希望将文本呈现为粗体或斜体。strong或em表示您希望以用户理解为“重要”的方式呈现文本。默认情况下,将 strong 渲染为粗体,将 em 渲染为斜体,但某些其他文化可能使用不同的映射。
就像程序中的字符串一样,b和i将被“硬编码”,而strong和em将被“本地化”。
正如其他人所说,<b> 和 <i> 是显式的(即“使此文本变粗”),而 <strong> 和 <em> 是语义的(即“应强调此文本”)。
在现代网络浏览器的上下文中,很难看出差异(它们似乎都产生相同的结果,对吧?),但想想为视障人士设计的屏幕阅读器。如果屏幕阅读器遇到 <i> 标记,它不知道该怎么做。但是,如果遇到 <em> 标签,它就知道其中的任何内容都应该向听众强调。在其中你会得到实际的区别。
<i>
, <b>
,<em>
和<strong>
标签传统上是具有代表性的。但它们在HTML5中被赋予了新的语义含义。
<i>
并<b>
用于 HTML4 中的字体样式。<i>
用于斜体和<b>
粗体。在 HTML5中,标签具有“交替语音或情绪”<i>
的新语义含义,标签具有风格偏移的含义。<b>
标签的示例用法<i>
是 - 分类名称、技术术语、来自另一种语言的惯用短语、音译、思想、西方文本中的船名。如 -
<p><i>I hope this works</i>, he thought.</p>
标签的示例使用<b>
是文档摘录中的关键字、评论中的产品名称、交互式文本驱动软件中的可操作词、文章引导。
下面的示例段落在风格上与其后面的段落有偏移。
<p><b class="lead">The event takes place this upcoming Saturday, and over 3,000 people have already registered.</b></p>
<em>
并且<strong>
在HTML4中有强调和强调的意思。但在 HTML5 中<em>
意味着强调强调,<strong>
意味着强烈的重要性。
在以下示例中,在阅读之前的单词时应该有语言变化......
<p>Make sure to sign up <em>before</em> the day of the event, September 16, 2016</p>
在同一个例子中,我们可以使用<strong>
如下标签..
<p>Make sure to sign up <em>before</em> the day of the event, <strong>September 16, 2016</strong></p>
重视活动日期。
MDN 参考:
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/b
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/i
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/em
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/strong
正如其他人所说,区别在于硬编码字体样式,而决定<b>
语义含义,字体样式(或说浏览器语调,或你有什么)在呈现文本时确定(或说)。<i>
<strong>
<em>
如果您愿意,您可以将其视为“物理”字体样式和“逻辑”样式之间的区别。稍后,您可能希望更改显示方式<strong>
和<em>
文本,例如,通过更改样式表中的属性以添加颜色和大小更改,甚至完全使用不同的字体。如果您使用“逻辑”标记而不是硬编码的“物理”标记,那么您只需在样式表中的一个位置更改显示属性,然后所有引用该样式表的页面都会自动更改,而无需不得不编辑它们。
很流畅吧?
这也是style=
为段落、表格单元格、标题文本、标题等定义子样式(使用文本标签中的属性引用)和使用<div>
标签的基本原理。您可以在样式表中为您的逻辑样式定义物理表示,并且更改会自动反映在引用该样式表的网页中。想要源代码的不同表示?为您的“代码”样式重新定义字体、大小、粗细、间距等。
如果您使用 XHTML,您甚至可以定义自己的语义标签,并且您的样式表会为您完成到物理字体样式和布局的转换。
实际上,我同时使用 <strong> 和 <b> 正是出于此回复线程中提到的原因。有时,粗体字看起来会更好,但它在语义上并不一定比句子的其余部分更重要。这是我现在正在处理的页面中的一个示例:
“检索<strong>所有</strong>关于<b>长曲棍球</b>的书籍。”
在那句话中,“all”这个词非常重要,而“lacrosse”则不太重要——我只是想让它加粗,因为它代表一个搜索词,所以我想要一些视觉上的分离。如果您正在使用屏幕阅读器查看该页面,我真的认为不需要特意强调“曲棍球”这个词。
我倾向于想象大多数 Web 开发人员都使用其中之一,但两者都很好——正如某些人所声称的那样,<b> 绝对不会被弃用。对我来说,这只是视觉吸引力和意义之间的一条细线。
只有在使用 CSS 样式类出于任何原因不方便或不可能时才使用它们(例如博客系统,只允许在帖子中使用一些标签并最终嵌入样式)。另一个原因是支持非常旧的浏览器(某些移动设备?)或原始搜索引擎(为<b>
或<strong>
标签给出分数,而不是分析 CSS 样式)。
如果您可以定义 CSS 样式,请使用它们。
<b>
对于使用标签的粗体文本
对于使用 <strong>
标签的重要文本
<i>
对于使用标签的文本斜体样式
<em>
对于使用标签的强调文本
<b>
并且,很久<i>
以前没有实际的语义含义(如@splattne 指出的那样)是正确的。在现代 HTML5 ( ) 中,它们确实有意义。查看以下链接。<!DOCTYPE html>
语义(来自 MDN)
<b>
:关注元素- 摘要中的关键字
- 产品名称。
<p>Here at company XYZ, we use <b>HTML</b> and <b>Javascript</b>.</p>
<i>
:惯用文本元素- 另类的声音或情绪
- 分类名称(例如“智人”属和种)
- 来自另一种语言的惯用术语(例如“等”)
- 技术用词
<p>I <i>did</i> tell him, to arrive on time for the meeting.</p>
<b>
对比<strong>
认识到 HTML5 中的有效元素和语义元素可能会有所帮助,并且巧合的是,它们在大多数浏览器中都具有相同的默认样式(粗体)(尽管一些较旧的浏览器实际上会加下划线<strong>
)。每个元素都旨在用于某些类型的场景,如果你想加粗文本进行装饰,你应该实际使用 CSS font-weight 属性。来源
<i>
对比<em>
元素表示其内容的<em>
强调重点,而<i>
元素表示从普通散文引出的文本。来源
我的 2 美分
我个人更喜欢<b>
and <i>
over <strong>
and <em>
。
从开发人员的角度来看,它们更短,它们的语义也很有意义。我不知道今天的屏幕阅读器是否可以使用它们。如果没有,我想他们最终会的。A18n 是一个很难的话题,我只是按照文档的引导。MDN 说我可以使用它们,所以我这样做了。
<b>
并且<i>
应该避免,因为它们描述了文本的样式。相反,使用<strong>
and<em>
因为它描述了文本的语义(意义)。
与 HTML 中的所有内容一样,您应该考虑的不是您希望它的外观,而是您的实际含义。当然,它对你来说可能只是粗体和斜体,但对屏幕阅读器来说却不是。
“它们具有相同的效果。但是,XHTML 是一种更简洁、更新的 HTML 版本,建议使用<strong>
标签。强更好,因为它更易于阅读 - 它的含义更清晰。此外,<strong>
传达一种含义 - 显示文本strong - while <b>
(for bold) 传达一种方法 - 将文本加粗。使用strong,如果您使用 CSS 样式表来更改使文本变得强大的方法,您的代码仍然有意义。
<i>
和“之间的区别也是如此<em>
。
谷歌迪克西特:
http://wiki.answers.com/Q/What_is_the_difference_between_HTML_tags_b_and_strong
你通常应该尽量避免<b>
and <i>
。在创建 CSS 之前的早期 HMTL 版本中,它们被引入用于布局页面(改变它的外观),比如同时删除的font
标签,主要是为了向后兼容而保留,因为一些论坛允许内联 HTML,这很容易改变文本外观的方法(比如 BBCode 使用[i]
,你可以使用<i>
等等)。
自从创建 CSS 以来,布局实际上不再应该在 HTML 中完成,这就是首先创建 CSS 的原因(HTML == 结构,CSS == 布局)。这些标签将来也可能会消失,毕竟span
如果您需要“无意义”的字体变体,您可以使用 CSS 和标签使文本变为粗体/斜体。HTML 5 仍然允许它们,但声明以这种方式标记文本没有任何意义。
<em>
<strong>
另一方面,只说“强调”或“强烈强调”的东西,它完全开放给浏览器如何呈现它。默认情况下,大多数浏览器将呈现em
为标准建议的斜体和strong
粗体,但它们并非被迫这样做(它们可能使用不同的颜色、字体大小、字体等)。您可以使用 CSS 以您希望的方式更改行为。em
例如,如果你愿意,你可以加粗,strong
加粗和红色。
HTML 格式化元素:
HTML 还定义了用于定义具有特殊含义的文本的特殊元素。HTML 使用 <b> 和 <i> 等元素来格式化输出,例如粗体或斜体文本。
HTML粗体和强格式:
HTML <b> 元素定义粗体文本,没有任何额外的重要性。
<b>This text is bold</b>
HTML <strong> 元素定义了强文本,增加了语义“强”的重要性。
<strong>This text is strong</strong>
HTML斜体和强调格式:
HTML <i> 元素定义斜体文本,没有任何额外的重要性。
<i>This text is italic</i>
HTML <em> 元素定义了强调的文本,并增加了语义重要性。
<em>This text is emphasized</em>
在 HTML Lang 中,这两个标签的用法如下:
simple text this is test text normal text
simple text this is important textwith normal text
这两个 HTML 标签之间的主要区别在于粗体使文本仅在视觉上看起来粗体,而强烈的象征意义也将相应的文本视为必不可少的,并表明它是一个清晰的单词或文本部分。
这种差异是由于 HTML 代码区分符号和物理视觉 html 标记这一事实。前者指的是相关领域的含义,后者仅仅定义了浏览器中的光学显示。你可以从这里检查这个
<strong>
并且<em>
是抽象的(这是人们说它是语义的意思)。
<b>
并且<i>
是使某些东西“强大”或“强调”的特定方法
比喻:
既是<strong>
为了<b>
又<em>
是为了<i>
作为
“车辆”是“吉普车”
我们将<strong>
标签用于对 SEO 目的具有高优先级的文本,如产品名称、公司名称等,而<b>
简单则使其粗体。
同样,我们使用<em>
对 SEO 具有高优先级的文本,同时<i>
使文本简单地斜体。