如同文字編輯器提供 <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,您必須使用 < 或較難記住的編碼 < 逸出該字元。HTML 中有四個保留實體:<、>、& 和 "。其字元參照分別為 <、>、& 和 "。
您經常會用到的其他實體包括:© 版權符號 (©)、™ 商標符號 (™) 和 不換行空格。
如果您想在兩個字元或單字之間加入空格,但不想讓系統在此處換行,不斷行空格就派得上用場。
有超過 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̶̼͖ţ̘h̝̰̩͈̗i̙̪n͏̩̙
͍̱̫̜̟g̢̣ͅ ̗̰͓̲̞̀t͙̀o̟
̖͖̹̕ ͓̼͎̝͖̭dó̪̠͕̜ ͍̱
͎͚̯̟́w̮̲̹͕͈̟͞ìth̢ ̰̳
̯̮͇
這段程式碼中含有幾個未逸出的字元,以及幾個具名字元參照。由於字元集是 UTF-8,因此如本例所示,引號中的最後幾個字元實際上不需要逸出。只有字元集不支援的字元需要逸出。如有需要,您可以使用多種工具逸出各種字元,也可以只確保在 <head> 中加入 <meta charset="UTF-8">。
即使將字元集指定為 UTF-8,如要將 < 列印到螢幕上,仍須逸出該字元。一般來說,您不需要加入 >、" 或 & 的具名字元參照;但如果您想撰寫 HTML 實體教學課程,在教導他人如何編寫 < 時,就必須撰寫 <。😀
此外,笑臉表情符號是 😀,但這份文件已宣告為 UTF-8,因此不會逸出。
隨堂測驗
測驗您對 HTML 文字的瞭解程度。
如何在 HTML 中顯示著作權符號?
c©©right。哪個元素可用來表示某個內容是引文?
<blockquote><quote><cite><cite> 元素是用來指出引文的來源,而非引文本身。