高级文本格式化
HTML 中还有许多其他用于格式化文本的元素,我们在HTML 文本基础文章中没有提到。本文中描述的元素不太为人所知,但仍然有用(而且这绝不是完整列表)。在这里,您将学习如何标记引用、描述列表、计算机代码和其他相关文本、下标和上标、联系信息等等。
描述列表
在 HTML 文本基础中,我们介绍了如何在 HTML 中标记基本列表,并且我们提到了您偶尔会遇到的第三种列表类型——**描述列表**。这些列表的目的是标记一组项目及其关联的描述,例如术语和定义,或问题和答案。让我们看一个术语和定义的示例
soliloquy In drama, where a character speaks to themselves, representing their inner thoughts or feelings and in the process relaying them to the audience (but not to other characters.) monologue In drama, where a character speaks their thoughts out loud to share them with the audience and any other characters present. aside In drama, where a character shares a comment only with the audience for humorous or dramatic effect. This is usually a feeling, thought or piece of additional background information
描述列表使用与其他列表类型不同的包装器——<dl>
;此外,每个术语都包装在<dt>
(描述术语)元素中,每个描述都包装在<dd>
(描述定义)元素中。
描述列表示例
让我们完成我们示例的标记
<dl>
<dt>soliloquy</dt>
<dd>
In drama, where a character speaks to themselves, representing their inner
thoughts or feelings and in the process relaying them to the audience (but
not to other characters.)
</dd>
<dt>monologue</dt>
<dd>
In drama, where a character speaks their thoughts out loud to share them
with the audience and any other characters present.
</dd>
<dt>aside</dt>
<dd>
In drama, where a character shares a comment only with the audience for
humorous or dramatic effect. This is usually a feeling, thought, or piece of
additional background information.
</dd>
</dl>
浏览器默认样式会将描述列表的描述相对于术语略微缩进。
一个术语的多个描述
请注意,允许一个术语具有多个描述,例如
<dl>
<dt>aside</dt>
<dd>
In drama, where a character shares a comment only with the audience for
humorous or dramatic effect. This is usually a feeling, thought, or piece of
additional background information.
</dd>
<dd>
In writing, a section of content that is related to the current topic, but
doesn't fit directly into the main flow of content so is presented nearby
(often in a box off to the side.)
</dd>
</dl>
主动学习:标记一组定义
现在轮到您尝试描述列表了;在输入字段中的原始文本中添加元素,使其在输出字段中显示为描述列表。如果您愿意,可以使用您自己的术语和描述。
如果您犯了错误,可以使用重置按钮随时重置。如果您真的卡住了,请按显示解决方案按钮查看答案。
引用
HTML 还提供了用于标记引用的功能;您使用哪个元素取决于您是在标记块引用还是内联引用。
块引用
如果一段块级内容(无论是段落、多个段落、列表等)是从其他地方引用过来的,则应将其包装在<blockquote>
元素中以表示这一点,并在cite
属性中包含指向引用来源的 URL。例如,以下标记取自 MDN 的<blockquote>
元素页面
<p>
The <strong>HTML <code><blockquote></code> Element</strong> (or
<em>HTML Block Quotation Element</em>) indicates that the enclosed text is an
extended quotation.
</p>
要将其转换为块引用,我们只需执行以下操作
<p>Here is a blockquote:</p>
<blockquote
cite="https://mdn.org.cn/en-US/docs/Web/HTML/Element/blockquote">
<p>
The <strong>HTML <code><blockquote></code> Element</strong> (or
<em>HTML Block Quotation Element</em>) indicates that the enclosed text is
an extended quotation.
</p>
</blockquote>
浏览器默认样式会将其呈现为缩进的段落,以指示它是一个引用;引用上方的段落是为了演示这一点。
内联引用
内联引用的工作方式完全相同,只是它们使用<q>
元素。例如,以下标记包含来自 MDN 的<q>
页面的引用
<p>
The quote element — <code><q></code> — is
<q cite="https://mdn.org.cn/en-US/docs/Web/HTML/Element/q">
intended for short quotations that don't require paragraph breaks.
</q>
</p>
浏览器默认样式会将其呈现为用引号括起来的普通文本,以指示引用,如下所示
引用
尽管`cite
` 属性的内容看起来很有用,但不幸的是,浏览器、屏幕阅读器等并没有真正利用它。无法让浏览器显示 cite
的内容,除非使用 JavaScript 或 CSS 编写自己的解决方案。如果你想在页面上提供引文的来源,你需要通过链接或其他合适的方式在文本中提供。
有一个`<cite>
` 元素,但它用于包含被引用资源的标题,例如书籍名称。但是,没有任何理由阻止你以某种方式将 <cite>
内部的文本链接到引文来源。
<p>
According to the
<a href="/en-US/docs/Web/HTML/Element/blockquote">
<cite>MDN blockquote page</cite></a>:
</p>
<blockquote
cite="https://mdn.org.cn/en-US/docs/Web/HTML/Element/blockquote">
<p>
The <strong>HTML <code><blockquote></code> Element</strong> (or
<em>HTML Block Quotation Element</em>) indicates that the enclosed text is
an extended quotation.
</p>
</blockquote>
<p>
The quote element — <code><q></code> — is
<q cite="https://mdn.org.cn/en-US/docs/Web/HTML/Element/q">
intended for short quotations that don't require paragraph breaks.
</q>
— <a href="/en-US/docs/Web/HTML/Element/q"><cite>MDN q page</cite></a>.
</p>
默认情况下,引用以斜体显示。
主动学习:谁说的?
是时候进行另一个主动学习示例了!在这个示例中,我们希望你
- 将中间段落转换为一个包含
cite
属性的块引用。 - 将第三段落中的“The Need To Eliminate Negative Self Talk”转换为内联引用,并包含
cite
属性。 - 将每个来源的标题用
<cite>
标签包裹起来,并将每个标题转换为指向该来源的链接。
你需要引用的来源是
- 孔子语录的来源:
http://www.brainyquote.com/quotes/authors/c/confucius.html
- “The Need To Eliminate Negative Self Talk”的来源:
http://example.com/affirmationsforpositivethinking
。
如果您犯了错误,可以使用重置按钮随时重置。如果您真的卡住了,请按显示解决方案按钮查看答案。
缩写
缩写示例
让我们看一个例子。
<p>
We use <abbr>HTML</abbr>, Hypertext Markup Language, to structure our web
documents.
</p>
<p>
I think <abbr title="Reverend">Rev.</abbr> Green did it in the kitchen with
the chainsaw.
</p>
这些将看起来像这样
注意:早期版本的 HTML 也支持`<acronym>
` 元素,但它已从 HTML 规范中移除,转而使用 <abbr>
来表示缩写和首字母缩略词。不应使用 <acronym>
。
主动学习:标记缩写
对于这个简单的主动学习作业,我们希望你标记一个缩写。你可以使用下面的示例,或者用你自己的示例替换它。
标记联系信息
HTML 有一个用于标记联系信息的元素`<address>
`。它用于包裹你的联系信息,例如
<address>Chris Mills, Manchester, The Grim North, UK</address>
它还可以包含更复杂的标记和其他形式的联系信息,例如
<address>
<p>
Chris Mills<br />
Manchester<br />
The Grim North<br />
UK
</p>
<ul>
<li>Tel: 01234 567 890</li>
<li>Email: [email protected]</li>
</ul>
</address>
请注意,如果链接的页面包含联系信息,以下内容也是可以的。
<address>
Page written by <a href="../authors/chris-mills/">Chris Mills</a>.
</address>
上标和下标
表示计算机代码
有许多元素可用于使用 HTML 标记计算机代码
<code>
:用于标记通用的计算机代码片段。<pre>
:用于保留空白字符(通常是代码块)——如果你在文本中使用缩进或多余的空白字符,浏览器将忽略它们,你将不会在渲染的页面上看到它们。但是,如果你将文本用<pre></pre>
标签包裹起来,你的空白字符将与你在文本编辑器中看到的一样进行渲染。<var>
:专门用于标记变量名称。<kbd>
:用于标记输入到计算机中的键盘(和其他类型)输入。<samp>
:用于标记计算机程序的输出。
让我们看看这些元素的示例以及它们如何用于表示计算机代码。如果你想查看完整的文件,请查看`other-semantics.html` 示例文件。你可以下载该文件并在浏览器中打开它以自行查看,但这里有一段代码片段
<pre><code>const para = document.querySelector('p');
para.onclick = function() {
alert('Owww, stop poking me!');
}</code></pre>
<p>
You shouldn't use presentational elements like <code><font></code> and
<code><center></code>.
</p>
<p>
In the above JavaScript example, <var>para</var> represents a paragraph
element.
</p>
<p>Select all the text with <kbd>Ctrl</kbd>/<kbd>Cmd</kbd> + <kbd>A</kbd>.</p>
<pre>$ <kbd>ping mozilla.org</kbd>
<samp>PING mozilla.org (63.245.215.20): 56 data bytes
64 bytes from 63.245.215.20: icmp_seq=0 ttl=40 time=158.233 ms</samp></pre>
以上代码将如下所示
标记时间和日期
HTML 还提供`<time>
` 元素,用于以机器可读的格式标记时间和日期。例如
<time datetime="2016-01-20">20 January 2016</time>
这有什么用?嗯,人类记录日期的方式有很多种。上述日期可以写成
- 20 January 2016
- 20th January 2016
- Jan 20 2016
- 20/01/16
- 01/20/16
- The 20th of next month
- 20e Janvier 2016
- 2016 年 1 月 20 日
- 等等
但这些不同的形式不容易被计算机识别——如果你想自动获取页面上所有事件的日期并将其插入日历中怎么办?`<time>
` 元素允许你为此目的附加一个明确的、机器可读的时间/日期。
上面的基本示例只提供了一个简单的机器可读日期,但还有许多其他选项是可能的,例如
<!-- Standard simple date -->
<time datetime="2016-01-20">20 January 2016</time>
<!-- Just year and month -->
<time datetime="2016-01">January 2016</time>
<!-- Just month and day -->
<time datetime="01-20">20 January</time>
<!-- Just time, hours and minutes -->
<time datetime="19:30">19:30</time>
<!-- You can do seconds and milliseconds too! -->
<time datetime="19:30:01.856">19:30:01.856</time>
<!-- Date and time -->
<time datetime="2016-01-20T19:30">7.30pm, 20 January 2016</time>
<!-- Date and time with timezone offset -->
<time datetime="2016-01-20T19:30+01:00">
7.30pm, 20 January 2016 is 8.30pm in France
</time>
<!-- Calling out a specific week number -->
<time datetime="2016-W04">The fourth week of 2016</time>
测试你的技能!
你已经到达了本文的结尾,但你能记住最重要的信息吗?在继续之前,你可以找到一些进一步的测试来验证你是否保留了这些信息——请参阅`测试你的技能:高级 HTML 文本`。
总结
这标志着我们对 HTML 文本语义的研究结束。请记住,你在本课程中学到的内容并非 HTML 文本元素的详尽列表——我们希望尝试涵盖基本内容,以及你在实际应用中会看到的一些更常见的元素,或者至少你可能会觉得有趣的元素。要查找更多 HTML 元素,你可以查看我们的`HTML 元素参考`(`内联文本语义` 部分将是一个很好的起点)。在下一篇文章中,我们将了解用于`构建 HTML 文档的不同部分`的 HTML 元素。