ChatGPT解决这个技术问题 Extra ChatGPT

<b> 和 <strong>、<i> 和 <em> 有什么区别?

HTML/XHTML 中的 <b><strong><i><em> 有什么区别?你应该什么时候使用每个?

至少现在,我在 StackOverflow 中看到的所有内容都使用 元素“加粗”了
MDN 对如何使用这些标签有明确的描述(带有示例):<em><strong><b><i>
屏幕阅读器将使用语言重音来强调 中的单词发音。

r
reformed

它们对普通的 Web 浏览器渲染引擎具有相同的效果,但它们之间存在根本区别。

正如作者在 a discussion list post 中所写:

考虑三种不同的情况:

网络浏览器

盲人

手机

“粗体”是一种风格——当你说“粗体字”时,人们基本上知道这意味着在字母周围添加更多,比如说“墨水”,直到它们在其他字母中更加突出。

不幸的是,这对盲人来说毫无意义。在手机和其他 PDA 上,文本已经是粗体了,因为屏幕分辨率非常小。你不能在不搞砸的情况下加粗一个粗体。

<b> 是一种风格 - 我们知道“粗体”应该是什么样子。

<strong>表示应如何理解某事。 “强”在浏览器中可能(并且经常)意味着“粗体”,但它也可能意味着像 Jaws(盲人)这样的口语程序的语气较低或用下划线表示(因为你不能加粗粗体)在 Palm Pilot 上。

HTML 从来都不是关于样式的。对 "Tim Berners-Lee"“语义网”执行 some searches <strong> 是语义的——它描述了它所包围的文本(例如,“这个文本应该比其他文本更强大您显示的文本”)而不是描述如何它周围的文本应该显示(例如,“这个文本应该是粗体")。


请注意,<b>和 <i> not 在 HTML5 中已被弃用。它们的新用途是在语义上表示样式(或预期的表示),而 <strong>和<em>表示结构。您必须阅读stellify.net/…
很好的答案,但我会说“你不能用粗体加粗”是错误的,因为你假设它是一个布尔概念,而 font-weight: 采用更多可变的方法。既然存在高保真屏幕,就有了不同程度的大胆。
@TravisO 我相信他是在谈论 Palm Pilot 的具体技术限制。
我不相信一堆字母有任何内在含义,如果我们这样决定, 可以具有与 完全相同的语义含义。读者的制造者决定了什么,他们对待他们的方式是不同的还是完全相同的?
@deathApril 但他们做到了!它们确实有意义! HTML 不是由你相信什么或你决定什么来定义的。
s
sshow

<b><i> 是显式的 - 它们分别指定粗体和斜体。

<strong><em> 是语义化的 - 它们指定包含的文本应该以某种方式“强”或“强调”,通常是粗体和斜体,但允许通过 CSS 控制实际样式。因此,这些在现代网页中是首选。


很好的解释。另一方面,在 HTML 5 中, 也是语义化的,而不是显式的。叹。
是的,我读过的最好的解释是stellify.net/…
HTML5bi 具有新的语义含义。当您需要引起对散文的一部分的注意,或为了抵消普通散文,而不传达重点(em)、重要性(对于strong)或相关性时,它们是您应该使用的标签(对于 mark)。 b 用于关键字、产品名称、可操作的词等,而 i 用于技术术语、想法、短语等。老实说,IMO 需要在两者之间有更大的区别。
太糟糕了,stellify.net 的文本(和标题)在大多数廉价的办公室显示器和设置上完全无法阅读 ^^(缺乏对比度简直令人惊叹)
那么<b>曾经真的用来设置样式吗?
J
James

<strong><em> 为您的文档添加额外的语义含义。碰巧它们还为您的文本提供了粗体和斜体样式。

你当然可以用 CSS 覆盖他们的样式。

另一方面,<b><i> 仅应用字体样式,不应再使用。 (因为您应该使用 CSS 进行格式化,并且如果文本确实很重要,那么您可能会使其“强”或“强调”!)

希望这是有道理的。


如果你说不应该再使用,那么不支持的旧浏览器呢?
@Nirman 如果有人使用旧浏览器来浏览网络,那么从视觉和安全的角度来看,他或她已经遇到了很多问题。正因为如此,我相信程序员和设计师不应该再支持旧的浏览器了。
注意:如果我们说旧浏览器,这里指的是 Netscape 3 和 IE2(IE3 和 NS4 已经支持 )。如果你真的需要继续支持那些 20 世纪的浏览器,那么你就遇到了很大的麻烦。
<b> and <i> on the other hand only apply font styling and should no longer be used. 官方 HTML5 文档另有说明。需要引用吗?
这个答案是在 HTML5 发布前 6 年发布的!
R
Rick Westera

以下是定义的摘要以及建议的用法:

<b> ...出于实用目的而引起注意的一段文本,但没有传达任何额外的重要性,也没有暗示其他声音或情绪,例如文档摘要中的关键词 、评论中的产品名称、交互式文本驱动软件中的可操作字词文章主题

<strong> ...现在代表重要性而不是强调。

<i> ...一段文本以另一种声音或语气,或以其他方式偏离正常散文以指示不同质量的文本,例如 分类名称技术术语另一种语言的惯用短语思想或西方文本中的船名

<em> ...表示强调。

(这些都是来自 W3C 来源的直接引用,我强调了。请参阅:https://rawgithub.com/whatwg/html-differences/master/Overview.html#changed-elementshttp://www.w3.org/TR/html401/struct/text.html#h-9.2.1 的原文)


K
Kariem

<b><i> 都与样式有关,而 <em><strong> 是语义。在 HTML 4 中,第一个被归类为 font style elements,后者被归类为 phrase elements

正如您正确指出的那样,<i><em> 通常被认为是相似的,因为浏览器通常都以斜体呈现。但是根据规范,<em> 表示强调,而<strong> 表示更强调,这很清楚,但经常被误解。另一方面,何时使用 <i><b> 之间的区别实际上是一种风格问题。


strong 不表示“更强调”,而是表示“importance”。对于 stronger emphasis,将一个 em 元素嵌套在另一个 em 元素中。
@TestSubject528491 如果您点击我在上面使用的 phrase elements 的链接,您会看到我刚刚引用了规范。我不认为这与重要性的语义冲突,也不认为两个 em 的嵌套在一个强调中强调,我理解你的建议。
我认为 HTML5 规范只是在两者之间做出了更多区分。在我的解释中,“强调”意味着语气中的压力。例如,“你想穿那些牛仔裤吗?”与“你想买那些牛仔裤吗?”由于重点的位置不同而有不同的含义。 OTOH,“重要性”没有基于位置的影响。例如,“警告:小心狗!”如果重要性被删除,意义相同。
<b> and <i> are both related to style 嗯。官方 HTML5 文档另有说明。需要引用吗?
上面为 HTML 4 链接的 @vaxquis:<b><i> 是字体样式元素,而 <em><strong> 是短语元素。有什么建议可以改进吗?为了完整起见,也因为您的评论没有包含引用,在 HTML 5.2 中,所有这些元素都在 phrasing content
E
E_net4 - Mr Downvoter

我将在这里冒险历史和实际的热门话题:

是的,根据规范,<strong> 在 HTML4 中具有语义含义,而 <b> 具有严格的表示含义。

是的,当 HTML5 出现时,为 bi 引入了稍微不同的新语义含义。

是的,W3C recommends——基本上——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, which takes care to ensure that b and strong are treated the same 的网站之一。

世界上已经有如此庞大的 HTML 海洋可以满足这种期望,我只是无法想象 b 会被贬低以支持 strong 或者浏览器会开始以不同的方式显示它们默认。

就是这样了。这是我对语义、历史和现实世界的热门看法。 b/i 和 strong/em 是一样的吗?不会。在现代文明崩溃之前,它们可能都存在并在几乎所有情况下都被视为相同吗?我想是的。


M
Mutix

虽然 <strong><em> 在语义上当然更正确,但似乎有明确的正当理由将 <b><i> 标记用于客户编写的内容。

在此类内容中,单词或短语可能会加粗或斜体,而我们通常无法分析这种加粗或斜体的语义推理。

此外,这样的内容可以指代粗体和斜体字和短语以传达特定含义。

一个例子是一个英语考试问题,它指示学生替换粗体字。


“在语义上更正确”?你是什么意思?你读过关于 b/i 标签的 HTML5 规范吗?
T
Thomas Eding

<em><strong> 消耗的带宽比 <i><b> 多。

它们还需要更多的输入(如果不是自动生成的)。

它们还会用更多的文本使编辑器屏幕变得混乱。我似乎记得程序员喜欢较小的源文件,如果它们相同的话。 (让我们成为现实,它们是相同的。是的,存在“技术”(咳嗽,咳咳,对不起)差异,但一开始那大多是假的。)

使用上述任何标签,您可以使用样式表自定义它们的显示方式,如果您需要它们看起来不同于其默认呈现。


大声笑,这应该是公认的答案(HHOS).你的答案是整个页面上最实际和正确的答案,即使它有点开玩笑。关于“语义”的这整件事一开始就是一个愚蠢的游戏。我们都知道,任何查找此问题的人都在与主要浏览器供应商合作,Chrome、Firefox、IE 等。我们只想知道 realactual< /i> 差异可能是,而不是委员会在其丰富的空闲时间中辩论的内容。
S
Stephan Leclercq

b 或 i 表示您希望将文本呈现为粗体或斜体。 strong 或 em 表示您希望以用户理解为“重要”的方式呈现文本。默认情况下,将 strong 渲染为粗体,将 em 渲染为斜体,但某些其他文化可能使用不同的映射。

就像程序中的字符串一样,b 和 i 将被“硬编码”,而 strong 和 em 将被“本地化”。


J
JamShady

正如其他人所说, 是显式的(即“使此文本变粗”),而 是语义的(即“应强调此文本”)。

在现代网络浏览器的上下文中,很难看出区别(它们似乎都产生了相同的结果,对吧?),但请考虑为视障人士设计的屏幕阅读器。如果屏幕阅读器遇到 标记,它不知道该怎么做。但是,如果遇到 标签,它就知道其中的任何内容都应该向听众强调。在其中你会得到实际的区别。


<b> and <i> are explicit (i.e. "make this text bold"), 嗯。官方 HTML5 文档另有说明。需要引用吗?
我在 2008 年 11 月发布了这个答案。HTML5 于 2014 年发布。你真的要我在回答中引用八年后出现的东西吗?
a
adnan2nd

<i><b><em><strong> 标记传统上具有代表性。但在 HTML5 中,它们被赋予了新的语义

<i><b> 用于 HTML4 中的字体样式。 <i> 用于斜体,<b> 用于粗体。在 HTML5 中,<i> 标签具有“alternate voice or mood”的新语义含义,<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,您甚至可以定义自己的语义标签,并且您的样式表会为您完成到物理字体样式和布局的转换。


您也可以使用样式表彻底改变 <b><i> 的呈现方式。很流畅吧?
bi 没有任何代码。就像任何 HMTL 标签一样,它们具有默认的 CSS 样式,并且就像任何标签一样,您可以将其更改为您希望的样子。
J
Justin Blum

实际上,我同时使用 正是出于此回复线程中提到的原因。有时,粗体字看起来会更好,但它在语义上并不一定比句子的其余部分更重要。这是我现在正在处理的页面中的一个示例:

“检索所有关于长曲棍球的书籍。”

在那句话中,“all”这个词非常重要,而“lacrosse”则不太重要——我只是想让它加粗,因为它代表一个搜索词,所以我想要一些视觉上的分离。如果您正在使用屏幕阅读器查看该页面,我真的认为不需要特意强调“曲棍球”这个词。

我倾向于想象大多数 Web 开发人员都使用其中之一,但两者都很好——正如某些人所声称的那样, 绝对不会被弃用。对我来说,这只是视觉吸引力和意义之间的一条细线。


D
Danubian Sailor

只有在使用 CSS 样式类出于任何原因不方便或不可能时才使用它们(例如博客系统,只允许在帖子中使用一些标签并最终嵌入样式)。另一个原因是支持非常旧的浏览器(某些移动设备?)或原始搜索引擎(为 <b><strong> 标签提供分数,而不是分析 CSS 样式)。

如果您可以定义 CSS 样式,请使用它们。


T
Touhidur Rahaman

对于使用 <b> 标记的粗体文本

对于使用 <strong> 标记的重要文本

对于使用 <i> 标记的文本斜体样式

对于使用 <em> 标记的强调文本


J
Junaga

<b><i>,没有实际的语义含义(如 @splattne 指出的)是真的,很久之前。在现代 HTML5 (<!DOCTYPE html>) 中,它们确实有意义。查看以下链接。

语义(来自 MDN)

:Bring Attention To element 关键字在摘要产品名称中。

摘要中的关键字

产品名称。

<p>Here at company XYZ, we use <b>HTML</b> and <b>Javascript</b>.</p>

:惯用语文本元素 替代语音或语气 分类名称(例如属和种“智人”) 来自另一种语言的惯用术语(例如“等”) 技术术语

另类的声音或情绪

分类名称(例如“智人”属和种)

来自另一种语言的惯用术语(例如“等”)

技术词汇

<p>I <i>did</i> tell him, to arrive on time for the meeting.</p>

认识到这两者在 HTML5 中都是有效的语义元素可能会有所帮助,并且巧合的是,它们在大多数浏览器中都具有相同的默认样式(粗体)(尽管一些较旧的浏览器实际上在 <strong> 下划线)。每个元素都旨在用于某些类型的场景,如果你想加粗文本进行装饰,你应该实际使用 CSS font-weight 属性。 source

<em> 元素表示其内容的强调重点,而 <i> 元素表示从普通散文出发的文本。 source

我的 2 美分

我个人更喜欢 <b><i> 而不是 <strong><em>

从开发人员的角度来看,它们更短,它们的语义也很有意义。我不知道今天的屏幕阅读器是否可以使用它们。如果没有,我想他们最终会的。 A18n 是一个很难的话题,我只是按照文档的引导。 MDN 说我可以使用它们,所以我这样做了。


A
Al Mamun Khan

问:strong、b、bold、em、i 的区别?

答:这些是内联属性。

强:用于以粗体显示文本或在语义上突出显示它。

粗体或 b:这个粗体标签只是传统上以粗体样式设置的偏移文本。

em:<em> 标签在语义上强调重要的词。

i : <i> 标记只是偏移了通常以斜体样式设置的文本。

注意:您应该使用 <strong></strong><em></em> 标记它们有意义的名称来说明内容的类型。语义标签也有助于 SEO。


n
nickf

应避免使用 <b><i>,因为它们描述了文本的样式。相反,请使用 <strong><em>,因为它们描述了文本的语义(含义)。

与 HTML 中的所有内容一样,您应该考虑的不是您希望它的外观,而是您的实际含义。当然,它对你来说可能只是粗体和斜体,但对屏幕阅读器来说却不是。


完全不正确, 不应该被避免。它们在 HTML5 中具有语义含义。
s
splattne

“它们具有相同的效果。但是,XHTML,一种更简洁、更新的 HTML 版本,建议使用 <strong> 标记。Strong 更好,因为它更易于阅读 - 它的含义更清晰。此外,<strong> 传达一种含义 - 强烈地显示文本 - 而 <b> (用于粗体)传达一种方法 - 将文本加粗。使用 strong,如果您使用 CSS 样式表来更改使文本变得强大的方法,您的代码仍然有意义。

<i><em> 之间的区别也是如此。

谷歌迪克西特:

http://wiki.answers.com/Q/What_is_the_difference_between_HTML_tags_b_and_strong


C
Community

HTML 格式化元素:

HTML 还定义了用于定义具有特殊含义的文本的特殊元素。 HTML 使用 等元素来格式化输出,例如粗体或斜体文本。

HTML粗体和强格式:

HTML 元素定义粗体文本,没有任何额外的重要性。

<b>This text is bold</b>

HTML 元素定义了强文本,增加了语义“强”的重要性。

<strong>This text is strong</strong>

HTML斜体和强调格式:

HTML 元素定义斜体文本,没有任何额外的重要性。

<i>This text is italic</i>

HTML 元素定义了强调的文本,并增加了语义重要性。

<em>This text is emphasized</em>

The HTML <b> element defines bold text, without any extra importance. The HTML <i> element defines italic text, without any extra importance. 嗯。官方 HTML5 文档另有说明。需要引用吗?
M
Mecki

您通常应尽量避免使用 <b><i>。在创建 CSS 之前的早期 HMTL 版本中,它们被引入用于布局页面(改变它的外观),例如同时删除的 font 标记,主要是为了向后兼容而保留,因为一些论坛允许内联 HTML 和这是更改文本外观的简单方法(例如使用 [i] 的 BBCode,您可以使用 <i> 等等)。

自从创建 CSS 以来,布局实际上不再应该在 HTML 中完成,这就是首先创建 CSS 的原因(HTML == 结构,CSS == 布局)。这些标签将来也可能会消失,毕竟如果您需要“无意义”的字体变体,您可以使用 CSS 和 span 标签使文本变为粗体/斜体。 HTML 5 仍然允许它们,但声明以这种方式标记文本没有意义

另一方面,<em><strong> 仅表示“强调”或“强烈强调”某些内容,它完全开放给浏览器如何呈现它。默认情况下,大多数浏览器会将 em 呈现为斜体,将 strong 呈现为标准建议的粗体,但它们并非被迫这样做(它们可能使用不同的颜色、字体大小、字体等)。您可以使用 CSS 以您希望的方式更改行为。例如,您可以根据需要将 em 设为粗体,将 strong 设为粗体和红色。


<b>和 <i>在 HTML 4 中没有被弃用,即使在即将到来的 HTML 5 中仍然完全支持。和<强>不是他们的替代品。另请参阅w3.org/TR/html401/index/elements.html
@thomasrutter 它们仍在 HMTL5 中,但具有不同的含义,并且非常详细地解释了如何使用它们,或者更确切地说,如何不使用它们。请注意,这些标签没有意义(粗体和斜体没有意义,它们是设计说明,HMTL 是关于意义的,CSS 是关于设计的) - HTML 是关于描述文本是什么而不是关于如何呈现它(这是分开的在 HMTL3 之后有充分的理由),。
m
miken32

在 HTML Lang 中,这两个标签的用法如下:

simple text this is test text normal text



simple text this is important textwith normal text

这两个 HTML 标签之间的主要区别在于粗体使文本仅在视觉上看起来粗体,而强烈的象征意义也将相应的文本视为必不可少的,并表明它是一个清晰的单词或文本部分。

这种差异是由于 HTML 代码区分符号和物理视觉 html 标记这一事实。前者指的是相关领域的含义,后者仅仅定义了浏览器中的光学显示。


a
ahnbizcad

<strong><em> 是抽象的(这是人们说它是语义的意思)。 <b><i> 是使某些东西“强大”或“强调”的特定方式

比喻:

<strong><b><em><i>

作为

“车辆”是“吉普车”


我不明白为什么这个答案被否决了。许多其他类似内容的答案也受到好评。
S
Simon Adcock

我们将 <strong> 标记用于对 SEO 具有高优先级的文本,例如产品名称、公司名称等,而 <b> 简单则使其粗体。

同样,我们使用 <em> 表示对 SEO 具有高优先级的文本,而 <i> 使文本简单地斜体。


一些 HTML 标签确实有 SEO 应用。元描述、元机器人或链接规范等等。因为据我们所知,strong/em 不是其中之一,无论在理论上还是在实践中。