文字基本概念

如同文字編輯器提供 <h1><h6> 標題,以及多種方式來以有意義的視覺化方式格式化文字區段,HTML 也提供非常類似的語意和非語意元素集,可解讀散文的意義。

本節將介紹標記文字的主要方式,也就是文字基本概念。接著討論屬性,然後探討標記文字的其他方式,例如清單、表格和表單。

再次探討標題

共有六個章節標題元素:<h1><h2><h3><h4><h5><h6>,其中 <h1> 最重要,<h6> 最不重要。多年來,開發人員一直認為瀏覽器會使用標題來概述文件。這原本是目標,但瀏覽器從未實作文件大綱功能,且建議的大綱演算法已正式從 HTML 規格中移除。不過,螢幕閱讀器使用者會大量依賴標題做為探索策略,瞭解網頁內容,並使用 h 鍵瀏覽標題。請務必以符合邏輯的方式導入標題層級 (如同為文件建立大綱),確保內容可供存取,強烈建議您這麼做。

根據預設,瀏覽器會將 <h1> 設為最大,<h2> 稍微小一點,後續每個標題層級預設都會變小。在過去,使用者代理程式樣式表也會遞減巢狀內嵌於分節元素 (例如 <article><aside><nav><section>) 內的 <h1> 元素字型大小。

部分使用者代理程式樣式表包含下列選取器 (或類似項目),可將巢狀 <h1> 元素設定為較低的標題層級:

/* Legacy UA stylesheet behavior (now removed from browsers and the HTML spec) */
h2, :is(article, aside, nav, section) h1 {}
h3, :is(article, aside, nav, section) :is(article, aside, nav, section) h1 {}

不過,無障礙物件模型 (AOM) 和螢幕閱讀器從未根據巢狀結構修改標題層級;巢狀 <h1> 一律會回報為「標題,層級 1」。這導致巢狀標題在視覺上較小,但對輔助技術而言仍是頂層標題,造成不一致的情況。

由於 HTML 規格移除了文件大綱演算法,瀏覽器也移除了這些舊版使用者代理程式樣式表規則。因此,巢狀 <h1> 元素會保留標準的 <h1> 字型大小,不會自動縮小。

請勿依賴在分區元素內巢狀嵌入 <h1> 元素,來設定視覺樣式或結構階層。請務必根據文件結構,使用連續的標題元素 (<h1><h6>) 標記內容。確保搜尋引擎、螢幕閱讀器和日後的維護人員都能清楚瞭解內容。

除了標題之外,大部分的結構化文字都是由一系列段落組成。在 HTML 中,段落會以 <p> 標記標示;結尾標記為選用項目,但建議一律加上。

#about 區段包含標題和幾個段落:

這個區段沒有無障礙元素名稱,因此不是地標。如要將此項目轉換為位置標記角色 region,可以使用 aria-labelledby 提供無障礙元素名稱:

<section id="about"  aria-labelledby="about_heading">
<h2 id="about_heading">What you'll learn</h2>

請只在適當情況下建立地標。如果地標過多,螢幕閱讀器使用者很快就會感到迷失。

引文和引用內容

標記文章或網誌貼文時,您可能想加入引文或醒目引文,並視需要顯示出處。 這三種元件的元素分別是:<blockquote><q><cite> (適用於顯示的引用內容),或是 cite 屬性 (適用於提供更多搜尋資訊)。

#feedback 區段包含標題和三則評論;這些評論是引用文字,其中部分包含引號,後面接著含有引文的段落。省略第三則評論以節省空間,標記如下:

引文作者或出處的相關資訊不屬於引文內容,因此不會出現在 <blockquote> 中,而是位於引文之後。 雖然這些是該詞的通俗用法,但實際上並未引用特定資源,因此會封裝在 <p> 段落元素中。

引言會顯示在三行中,包括作者姓名、先前擔任的角色和專業抱負。<br> 換行符號 會在文字區塊中建立換行符號。可用於實體地址、詩詞和簽名區塊。請勿使用換行符做為歸位字元,分隔段落。請改為關閉先前的段落,然後開啟新的段落。使用段落不僅有助於提升無障礙功能,還能啟用樣式。<br> 元素只是換行符,受影響的 CSS 屬性極少。

雖然我們在每個引用文字後方的段落中提供引用資訊,但先前顯示的引文是以這種方式編碼,因為這些引文並非來自外部來源。如果確實如此,則可以 (應該?) 引用來源。

如果評論是從評論網站、書籍或其他作品擷取,則 <cite> 元素可用於來源的標題。<cite> 的內容可以是書名、網站或電視節目名稱,甚至是電腦程式名稱。無論是隨口提及來源,還是引用或參考來源,都可以使用 <cite> 封裝。<cite> 的內容是作品,而非作者。

如果 Blendan Smooth 的引文是取自離線雜誌,您會這樣撰寫 blockquote:

引文元素 <cite> 沒有隱含角色,應從內容取得無障礙元素名稱,請勿加入 aria-label

如果無法顯示內容,但又想註明出處,可以使用 cite 屬性,並將資訊引用的來源文件或訊息網址設為屬性值。這項屬性在 <q><blockquote> 皆有效。雖然這是網址,但機器可讀取,讀者卻看不到:

</p> 結尾標記為選用項目 (但一律建議使用),</blockquote> 結尾標記則為必填。

大多數瀏覽器都會在 <blockquote> 內嵌方向中加入邊框間距,並將 <cite> 內容設為斜體,這可透過 CSS 控制。<blockquote> 不會新增引號,但可以使用 CSS 產生的內容新增引號。<q> 元素預設會新增引號,並使用適合該語言的引號。

#teachers 部分,HAL 引用了「對不起,,恐怕我無法這麼做。」這段話。以下是英文和法文的程式碼:

行內引號元素 <q> 會加入適合該語言的引號。使用者代理程式預設樣式包含 open-quote 和 close-quote 生成內容:

q::before {content: open-quote;}
q::after {content: close-quote;}

加入 lang 屬性是為了讓瀏覽器瞭解,雖然網頁的基本語言在 <html lang="en-US"> 開啟標記中定義為英文,但這段文字是使用其他語言。這有助於 Siri、Alexa 和 VoiceOver 等語音控制功能使用法文發音。並告知瀏覽器要算繪哪種引號。

<blockquote> 類似,<q> 元素也支援 cite 屬性。

HTML 實體

您可能已注意到逸出序列或「實體」。由於 < 用於 HTML,您必須使用 &lt; 或較難記住的編碼 &#60; 逸出該字元。HTML 中有四個保留實體:<>&"。其字元參照分別為 &lt;&gt;&amp;&quot;

您經常會用到的其他實體包括:&copy; 版權符號 (©)、&trade; 商標符號 (™) 和 &nbsp; 不換行空格。 如果您想在兩個字元或單字之間加入空格,但不想讓系統在此處換行,不斷行空格就派得上用場。 有超過 2,000 個具名字元參照。 但如有需要,每個字元 (包括表情符號) 都有以 &# 開頭的編碼對等項目。

如果您查看 ToastyMcToastface 的工作室評論 (未包含在上述程式碼範例中),會發現一些不尋常的文字字元:

<blockquote>Learning with Hal and Eve exceeded all of my wildest fantasies. All they did was stick a USB in. They promised that it was a brand new USB, so we know there were no viruses on it. The Russians had nothing to do with it. This has no̶̼͖ţ̘h̝̰̩͈̗i̙̪n͏̩̙͍̱̫̜̟g̢̣ͅ ̗̰͓̲̞̀t͙̀o̟̖͖̹̕ ͓̼͎̝͖̭dó̪̠͕̜ ͍̱͎͚̯̟́w̮̲̹͕͈̟͞ìth̢ ̰̳̯̮͇</blockquote>

這個引用文字區塊的最後一句也可以寫成:

This has no&#x336;&#x33C;&#x356;&tcedil;&#x318;h&#x31D;&#x330;&#x329;&#x348;&#x317;i&#x319;&#x32A;n&#x34F;&#x329;&#x319;
&#x34D;&#x331;&#x32B;&#x31C;&#x31F;g&#x322;&#x323;&#x345; &#x317;&#x330;&#x353;&#x332;&#x31E;&#x300;t&#x359;&#x300;o&#x31F;
&#x316;&#x356;&#x339;&#x315; &#x353;&#x33C;&#x34E;&#x31D;&#x356;&#x32D;d&oacute;&#x32A;&#x320;&#x355;&#x31C; &#x34D;&#x331;
&#x34E;&#x35A;&#x32F;&#x31F;&#x301;w&#x32E;&#x332;&#x339;&#x355;&#x348;&#x31F;&#x35E;&igrave;th&#x322; &#x330;&#x333;
&#x32F;&#x32E;&#x347;

這段程式碼中含有幾個未逸出的字元,以及幾個具名字元參照。由於字元集是 UTF-8,因此如本例所示,引號中的最後幾個字元實際上不需要逸出。只有字元集不支援的字元需要逸出。如有需要,您可以使用多種工具逸出各種字元,也可以只確保在 <head> 中加入 <meta charset="UTF-8">

即使將字元集指定為 UTF-8,如要將 < 列印到螢幕上,仍須逸出該字元。一般來說,您不需要加入 >"& 的具名字元參照;但如果您想撰寫 HTML 實體教學課程,在教導他人如何編寫 < 時,就必須撰寫 &lt;。😀

此外,笑臉表情符號是 &#x1F600;,但這份文件已宣告為 UTF-8,因此不會逸出。

隨堂測驗

測驗您對 HTML 文字的瞭解程度。

如何在 HTML 中顯示著作權符號?

c
請再試一次。
&copy;
答對了!
&copyright
請再試一次。

哪個元素可用來表示某個內容是引文?

<blockquote>
正確
<quote>
請再試一次。
<cite>
請再試一次。<cite> 元素是用來指出引文的來源,而非引文本身。