强调与重要性
上一篇文章探讨了语义在 HTML 中的重要性,重点是标题和段落。本文将继续以语义为主题,探讨对文本进行强调和重要性处理的 HTML 元素(与印刷媒体中的斜体和粗体文字类似)。
前提: | 基本熟悉了基本 HTML 语法中所涵盖的内容。 |
---|---|
学习成果: |
|
什么是强调和着重强调?
在日常用语中,我们常常会加重某个字的读音,或者用加粗等方式突出某句话的重点。与此类似,HTML 也提供了相应的标签,用于标记某些文本,使其具有加粗、倾斜、下划线等效果。下面,我们将学习一些最常见的标签。
强调
在口语表达中,我们有时会强调某些字,用来改变这句话的意思。同样地,在书面用语中,我们可以使用斜体字来达到同样的效果。例如,下面两个句子便有不同的意思:
我很庆幸你没有迟到。
我很庆幸你没有迟到。
第一句话听起来真的像松了一口气——因为没有迟到。相反,第二句话因为以斜体强调了“庆幸”和“迟到”两词,听起来具有讽刺性而且有隐含的攻击性,表达对一个人迟到的恼怒。
在 HTML 中我们用 <em>
(emphasis)元素来标记这样的情况。这样做既可以让文档读起来更有趣,也可以被屏幕阅读器识别,并以不同的语调发出。浏览器默认样式为斜体,但你不应该纯粹为了获得斜体风格而使用这个标签。如果仅仅为了获得斜体样式而不增加语义辅助,你应该使用 <span>
元素和一些 CSS,或者是 <i>
元素(见下文)。
<p>我很<em>庆幸</em>你没有<em>迟到</em>。</p>
着重强调
为了强调重要的词,在口语方面我们往往用重音强调,在书面用语中则是用粗体字来达到强调的效果。例如下面这段:
这杯液体毒性很大。
就指望你了,千万不要迟到!
在 HTML 中我们用 <strong>
(strong importance)元素来标记这样的情况。除了使文档更有用之外,屏幕阅读器也能识别这些内容,并可将其配置为以不同的语音语调进行朗读。浏览器默认样式为粗体,但你不应该纯粹为了获得粗体风格而使用这个标签。如果仅仅为了获得粗体样式而不增加语义辅助,你应该使用 <span>
元素和一些 CSS,或者是 <b>
元素(见下文)。
<p>这杯液体<strong>毒性很大</strong>。</p>
<p>就指望你了,千万<strong>不要</strong>迟到!</p>
如有需要,你可以将 strong 元素和 em 元素相互嵌套:
<p>
这杯液体<strong>毒性很大</strong>——如果饮用了它,你<strong>可能<em>会死</em></strong>。
</p>
主动学习:我们是重要的!
在这个主动学习部分,我们提供了一个可编辑的示例。在这个示例中,我们希望你能尝试在你认为需要斜体强调和着重强调的词上添加斜体强调和着重强调的内容,只是为了进行一些练习。
斜体、粗体、下划线……
到目前为止,我们所讨论的元素都有明确的相关语义。<b>
、<i>
和 <u>
的情况却有点复杂。它们出现于人们要在文本中使用粗体、斜体、下划线但 CSS 仍然不被完全支持的时期。像这样仅仅影响表象而且没有语义的元素,被称为表现元素(presentational element)并且不应该再被使用。因为正如我们在之前看到的,语义对无障碍、搜索引擎优化(SEO)等非常重要。
HTML5 重新定义了 <b>
、<i>
和 <u>
,赋予了它们新的但有点令人困惑的语义角色。
最好的经验法则是:只有在没有更合适的元素时,才适合使用 <b>
、<i>
或 <u>
来表达传统上用粗体、斜体或下划线表达的意思;而通常情况下是有更合适的元素可供使用的。<strong>
、<em>
、<mark>
或 <span>
可能是更加合适的选择。
始终保持无障碍的开发理念。斜体的概念对使用屏幕阅读器的人或使用拉丁字母以外的书写系统的人没有什么帮助。
<i>
被用来传达传统上用斜体表达的意义:外国文字、分类名称、技术术语、思想……<b>
被用来传达传统上用粗体表达的意义:关键字、产品名称、引导句……<u>
被用来传达传统上用下划线表达的意义:专有名词、拼写错误……
备注:
人们强烈地将下划线与超链接联系起来。因此,在网页中,最好只给链接加下划线。在语义上合适的时候使用 <u>
元素,但要考虑使用 CSS 将默认的下划线改为在网页中更合适的东西。下面的例子说明了如何做到这一点:
<!-- 学名 -->
<p>
红喉北蜂鸟(学名:<i>Archilocus colubris</i>)是北美东部最常见的蜂鸟品种。
</p>
<!-- 舶来词 -->
<p>
菜单上有好多舶来词汇,比如 <i lang="uk-latn">vatrushka</i>(东欧乳酪面包)、<i
lang="id"
>nasi goreng</i
>(印尼炒饭)以及 <i lang="fr">soupe à l'oignon</i>(法式洋葱汤)。
</p>
<!-- 已知的错误书写 -->
<p>总有一天我会改掉写<u class="spelling-error">措字</u>的毛病。</p>
<!-- 在定义中,被定义的术语 -->
<dl>
<dt>语义化 HTML</dt>
<dd>根据元素的<b>语义</b>意义而不是外观来使用它们。</dd>
</dl>