內容類別

大多數 HTML 元素都屬於一個或多個內容類別——這些類別將共享共同特徵的元素分組。這是一種鬆散的分類(它實際上並未在這些類別的元素之間建立關係),但它們有助於定義和描述這些類別的共享行為及其相關規則。有些元素(例如 <track>)可能不屬於任何這些類別。

內容類別用於定義元素的內容模型,換句話說,每個元素可以包含哪些後代。例如,<p> 元素只能包含短語內容,而 <div> 元素可以包含流內容

有七個主要內容類別,可以用下面的維恩圖概括

A Venn diagram showing how the various content categories interrelate. The following sections explain these relationships in text.

注意: 對這些內容類別及其比較功能的更詳細討論超出了本文的範圍;為此,您可能需要閱讀 HTML 規範的相關部分

元資料內容

屬於元資料內容類別的元素修改文件其餘部分的呈現或行為,設定指向其他文件的連結,或傳達其他帶外資訊。 <head> 中的所有內容,包括 <title><link><script><style> 以及較少使用的 <base>,都是元資料內容。有一個 <meta> 元素用於無法由這些其他元素表示的元資料。

元資料元素是

其中一些元素屬於多個內容類別。例如,<script> 屬於元資料、流和短語內容類別,並且是指令碼支援元素;<script> 可以在預期元資料內容、短語內容或指令碼支援元素的地方使用。

流內容

流內容是一個廣泛的類別,它包含大多數可以放入 <body> 元素的元素,包括標題元素、分割槽元素、短語元素、嵌入元素、互動元素和表單相關元素。它還包括文字節點(但不包括僅由空白字元組成的節點)。

流元素是

少數其他元素屬於此類別,但僅在滿足特定條件時

分割槽內容

分割槽內容是流內容的子集,它在當前大綱中建立了一個,定義了 <header><footer> 元素的範圍。

分割槽元素是

標題內容

標題內容是流內容的子集,它定義了一個節的標題。此定義既適用於由顯式分割槽內容元素標記的節,也適用於由標題內容本身隱式定義的節。

標題元素是

注意: 儘管 <header> 很有可能包含標題內容,但它本身並不是標題內容。

短語內容

短語內容是流內容的子集,指的是文件中的文字和標記。短語內容的序列構成段落。

短語元素是

少數其他元素屬於此類別,但僅在滿足特定條件時

嵌入內容

嵌入內容是流內容的子集,它匯入另一個資源或將來自另一個標記語言或名稱空間的內容插入到文件中。

嵌入內容元素是

互動式內容

互動式內容是流內容的子集,包括專門用於使用者互動的元素。

互動式內容元素是

某些元素僅在特定條件下屬於此類別

可感知內容

可感知內容是既不為空也不隱藏的內容;它是已渲染且實質性的內容。可感知內容不用於定義內容模型,但用於定義一個通用規則:內容模型允許任何流內容或短語內容的元素,其內容中應至少有一個節點是可感知內容,且沒有指定 hidden 屬性。

可感知元素是

某些元素僅在特定條件下屬於此類別

  • <audio>,如果存在 controls 屬性
  • <dl>,如果元素的子項至少包含一個名稱-值組
  • <input>,如果 type 屬性不處於隱藏狀態
  • <ol>,如果其子項至少包含一個 <li> 元素
  • <ul>,如果其子項至少包含一個 <li> 元素

指令碼支援元素

指令碼支援元素是不直接影響文件渲染輸出的元素。相反,它們透過直接包含或指定指令碼程式碼,或透過指定將被指令碼使用的資料來支援指令碼。幾乎所有元素,包括那些只接受特定元素(如 <ul>,它接受 <li> 元素)的元素,都可以包含指令碼支援元素。

指令碼支援元素是

表單關聯內容

表單關聯內容是流內容的子集,包含具有表單所有者且可在預期流內容的任何地方使用的元素。表單所有者可以是包含的 <form> 元素,也可以是其 id 在元素的 form 屬性中指定的 <form>

表單關聯元素是

此類別包含幾個子類別

列出的

HTMLFormElement.elementsHTMLFieldSetElement.elements 集合中列出的元素。包括 <button><fieldset><input><object><output><select><textarea>

可提交的

當表單提交時可用於構建表單資料集的元素。包括 <button><input><select><textarea>

可重置的

當表單重置時會受影響的元素。包括 <input><output><select><textarea>

自動大寫和自動更正繼承的

從其表單所有者繼承 autocapitalizeautocorrect 屬性的元素。包括 <button><fieldset><input><output><select><textarea>

可標註的

可以與 <label> 元素關聯的元素。包括 <button><input>(除 hidden 外的所有型別)、<meter><output><progress><select><textarea>

透明內容模型

如果一個元素具有透明內容模型,那麼它的內容必須這樣構造,即使透明元素被移除並替換為子元素,它們仍然是有效的 HTML。

例如,<del><ins> 元素是透明的

html
<p><del>Shopping</del> <ins>Returns</ins> list</p>
<ul>
  <del>
    <li>Oranges</li>
    <li>Toilet paper</li>
  </del>
  <li>Toothpaste</li>
</ul>

如果這些元素被移除,這個片段仍然是有效的 HTML(即使英語不正確)。

html
<p>Shopping Returns list</p>
<ul>
  <li>Oranges</li>
  <li>Toilet paper</li>
  <li>Toothpaste</li>
</ul>