高階文字功能

HTML 中有許多其他元素用於定義文字語義,我們沒有在強調和重要性文章中提及。本文描述的元素鮮為人知,但仍然很有用(這絕不是一個完整的列表)。在這裡你將學習如何標記引用、計算機程式碼及其他相關文字、上標和下標、聯絡資訊等等。

預備知識 具備 基本 HTML 語法 中涵蓋的基本 HTML 知識。文字級語義,例如 標題和段落 以及 列表
學習成果
  • 引用。
  • 縮寫和首字母縮略詞。
  • 地址。
  • 時間和日期。
  • 上標和下標。

引用

HTML 包含用於標記引用的功能;您使用的元素取決於您是要標記塊級引用還是內聯引用。

塊引用

如果某個塊級內容(無論是段落、多個段落、列表等)是引自其他地方的,您應該將其包裝在<blockquote>元素中以表示這一點,並在cite屬性中包含指向引用源的 URL。例如,以下標記取自 MDN 的<blockquote>元素頁面

html
<p>
  The <strong>HTML <code>&lt;blockquote&gt;</code> Element</strong> (or
  <em>HTML Block Quotation Element</em>) indicates that the enclosed text is an
  extended quotation.
</p>

要將其轉換為塊引用,我們只需這樣做

html
<p>Here is a blockquote:</p>
<blockquote
  cite="https://mdn.club.tw/en-US/docs/Web/HTML/Reference/Elements/blockquote">
  <p>
    The <strong>HTML <code>&lt;blockquote&gt;</code> Element</strong> (or
    <em>HTML Block Quotation Element</em>) indicates that the enclosed text is
    an extended quotation.
  </p>
</blockquote>

瀏覽器預設樣式會將其渲染為縮排段落,以指示它是一個引用;引文上方的段落是為了演示這一點。

內聯引用

內聯引用工作方式完全相同,只是它們使用<q>元素。例如,下面的標記包含一個來自 MDN <q>頁面的引用

html
<p>
  The quote element — <code>&lt;q&gt;</code> — is
  <q
    cite="https://mdn.club.tw/en-US/docs/Web/HTML/Reference/Elements/q">
    intended for short quotations that don't require paragraph breaks.
  </q>
</p>

瀏覽器預設樣式會將其渲染為用引號引起來的普通文字,以表示引用,如下所示

引文

cite屬性的內容聽起來很有用,但不幸的是,瀏覽器、螢幕閱讀器等並沒有對其進行太多處理。如果沒有使用 JavaScript 或 CSS 編寫自己的解決方案,就無法讓瀏覽器顯示cite的內容。如果您想在頁面上提供引用的來源,您需要透過連結或其他適當的方式在文字中提供它。

有一個<cite>元素,但它旨在包含被引用資源的標題,例如書名。但是,沒有理由不能以某種方式將<cite>中的文字連結到引用源

html
<p>
  According to the
  <a href="/en-US/docs/Web/HTML/Reference/Elements/blockquote">
    <cite>MDN blockquote page</cite></a>:
</p>

<blockquote
  cite="https://mdn.club.tw/en-US/docs/Web/HTML/Reference/Elements/blockquote">
  <p>
    The <strong>HTML <code>&lt;blockquote&gt;</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>&lt;q&gt;</code> — is
  <q cite="https://mdn.club.tw/en-US/docs/Web/HTML/Reference/Elements/q">
    intended for short quotations that don't require paragraph breaks.
  </q>
  — <a href="/en-US/docs/Web/HTML/Reference/Elements/q"><cite>MDN q page</cite></a>.
</p>

引文預設以斜體字型顯示。

誰說的?塊引用練習

又到了任務時間!在此示例中,我們希望您

  1. 單擊下面程式碼塊中的**“播放”**以在 MDN Playground 中編輯示例。
  2. 將中間段落轉換為塊引用,其中包含一個cite屬性。
  3. 將第三段中的“The Need To Eliminate Negative Self Talk”轉換為內聯引用,幷包含一個cite屬性。
  4. 將每個源的標題包裝在<cite>標籤中,並將每個標題轉換為指向該源的連結。

您需要的引文來源是

  • 孔子引文的http://www.brainyquote.com/quotes/authors/c/confucius.html
  • “The Need To Eliminate Negative Self Talk”的http://example.com/affirmationsforpositivethinking

如果您犯了錯誤,可以使用 MDN Playground 中的重置按鈕清除您的工作。如果您真的卡住了,可以在程式碼塊下方檢視解決方案。

html
<p>Hello and welcome to my motivation page. As Confucius' quotes site says:</p>
<p>It does not matter how slowly you go as long as you do not stop.</p>
<p>
  I also love the concept of positive thinking, and The Need To Eliminate
  Negative Self Talk (as mentioned in Affirmations for Positive Thinking.)
</p>
點選此處顯示解決方案

您完成的 HTML 應該看起來像這樣

html
<p>
  Hello and welcome to my motivation page. As
  <a href="http://www.brainyquote.com/quotes/authors/c/confucius.html"
    ><cite>Confucius' quotes site</cite></a
  >
  says:
</p>

<blockquote cite="http://www.brainyquote.com/quotes/authors/c/confucius.html">
  <p>It does not matter how slowly you go as long as you do not stop.</p>
</blockquote>

<p>
  I also love the concept of positive thinking, and
  <q cite="http://example.com/affirmationsforpositivethinking"
    >The Need To Eliminate Negative Self Talk</q
  >
  (as mentioned in
  <a href="http://example.com/affirmationsforpositivethinking"
    ><cite>Affirmations for Positive Thinking</cite></a
  >.)
</p>

縮寫

在瀏覽網頁時,您會遇到的另一個相當常見的元素是<abbr>——它用於包裹縮寫詞或首字母縮略詞。在包含任何一種情況時,首次使用時以純文字形式提供該術語的完整擴充套件,並使用<abbr>標記該縮寫。這為使用者代理提供瞭如何宣佈/顯示內容的提示,同時告知所有使用者該縮寫的含義。

如果除了縮寫之外再提供擴充套件意義不大,並且該縮寫或首字母縮略詞是一個相當短的術語,則將該術語的完整擴充套件作為title屬性的值

縮寫示例

讓我們看一個例子。

html
<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>

讓我們標記一個縮寫

對於此學習任務,我們希望您標記一個縮寫。

  1. 單擊下面程式碼塊中的**“播放”**以在 MDN Playground 中編輯示例。
  2. 使用適當的 HTML 標記包含的縮寫。您也可以隨意將其替換為您自己的縮寫,並嘗試標記它。

如果您犯了錯誤,可以使用 MDN Playground 中的重置按鈕清除您的工作。如果您真的卡住了,可以在程式碼塊下方檢視解決方案。

html
<p>NASA sure does some exciting work.</p>

<p>The new user interface design LGTM!</p>
點選此處顯示解決方案

您完成的 HTML 應該類似於以下程式碼片段

html
<p>
  <abbr>NASA</abbr> (the National Aeronautics and Space Administration) sure
  does some exciting work.
</p>

<p>The new user interface design <abbr title="Looks good to me">LGTM</abbr>!</p>
  • 可以說,NASA 應該在首次提及時在文字中展開,因為這對每個人來說都是文字中可用的有用資訊。
  • 另一方面,像“LGTM”這樣的首字母縮略詞純粹是為了節省空間和時間而編寫的,因此再寫出來就沒有意義了,因此將其擴充套件放在title屬性中。在實際應用程式中,您可能不會手動執行此操作——您會使用某種指令碼自動新增已知術語。

標記聯絡方式

HTML 有一個用於標記聯絡方式的元素——<address>。它包裹著您的聯絡方式,例如

html
<address>Chris Mills, Manchester, The Grim North, UK</address>

它還可以包含更復雜的標記和其他形式的聯絡資訊,例如

html
<address>
  <p>
    Chris Mills<br />
    Manchester<br />
    The Grim North<br />
    UK
  </p>

  <ul>
    <li>Tel: 01234 567 890</li>
    <li>Email: me@grim-north.co.uk</li>
  </ul>
</address>

請注意,如果連結頁面包含聯絡資訊,則類似這樣的內容也可以

html
<address>
  Page written by <a href="../authors/chris-mills/">Chris Mills</a>.
</address>

注意:<address>元素只能用於提供最近的<article><body>元素所包含文件的聯絡資訊。在網站的頁尾中使用它來包含整個網站的聯絡資訊,或者在文章中用於作者的聯絡方式是正確的,但不應將其用於標記與該頁面內容無關的地址列表。

上標和下標

在標記日期、化學式和數學方程等專案時,您偶爾需要使用上標和下標,以便它們具有正確的含義。<sup><sub>元素處理這項工作。例如

html
<p>My birthday is on the 25<sup>th</sup> of May 2001.</p>
<p>
  Caffeine's chemical formula is
  C<sub>8</sub>H<sub>10</sub>N<sub>4</sub>O<sub>2</sub>.
</p>
<p>If x<sup>2</sup> is 9, x must equal 3 or -3.</p>

此程式碼的輸出如下所示

表示計算機程式碼

HTML 中有許多可用於標記計算機程式碼的元素

  • <code>:用於標記通用計算機程式碼片段。
  • <pre>:用於保留空白(通常是程式碼塊)——如果您在文字中使用縮排或多餘的空白,瀏覽器會忽略它,您將不會在渲染頁面上看到它。但是,如果您將文字包裝在<pre></pre>標籤中,您的空白將與您在文字編輯器中看到的一樣被渲染。
  • <var>:專門用於標記變數名。
  • <kbd>:用於標記輸入到計算機中的鍵盤(和其他型別的)輸入。
  • <samp>:用於標記計算機程式的輸出。

讓我們看看這些元素的示例以及它們如何用於表示計算機程式碼。如果您想檢視完整檔案,請檢視other-semantics.html示例檔案。您可以下載該檔案並在瀏覽器中開啟它親自檢視,但這裡是程式碼片段

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>&lt;font&gt;</code> and
  <code>&lt;center&gt;</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>元素,用於以機器可讀的格式標記時間和日期。例如

html
<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>元素允許您為此目的附加一個明確的、機器可讀的時間/日期。

上面的基本示例僅提供了一個簡單的機器可讀日期,但還有許多其他選項,例如

html
<!-- 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 文字功能的資訊的理解和掌握程度。