內容類別

大多數 HTML 元素屬於一個或多個 **內容類別** - 這些類別對共享共同特徵的元素進行分組。這是一個鬆散的分組(它實際上並沒有在這些類別的元素之間建立關係),但它們有助於定義和描述類別的共享行為及其關聯規則,尤其是在您遇到其複雜細節時。元素也可能不屬於這些類別中的 *任何* 一個。

內容類別有三種

  • 主要內容類別,描述許多元素共享的通用規則。
  • 表單相關內容類別,描述表單相關元素共有的規則。
  • 特定內容類別,描述一些元素(有時僅在特定上下文中)共享的罕見類別。

注意:本文件不包含對這些內容類別及其比較功能的詳細討論;如需瞭解詳細資訊,您可以閱讀HTML 規範的相關部分

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

主要內容類別

元資料內容

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

元資料元素包括:

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

流內容

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

流元素包括:

其他一些元素也屬於此類別,但前提是必須滿足特定條件

分段內容

分段內容是流內容的一個子集,用於在當前大綱中建立一個部分,定義<header><footer>元素的作用域。

分段元素包括:

標題內容

標題內容是流內容的一個子集,用於定義某個部分的標題。此定義既適用於由顯式分段內容元素標記的部分,也適用於由標題內容本身隱式定義的部分。

標題元素包括:

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

短語內容

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

短語元素包括:

其他一些元素也屬於此類別,但前提是必須滿足特定條件

嵌入內容

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

嵌入內容元素包括:

互動式內容

互動式內容是流內容的一個子集,包含專門為使用者互動而設計的元素。

互動式內容元素包括:

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

可感知內容

當內容既不為空也不隱藏時,它就是可感知的;它是呈現且具有實質內容的內容。模型為流內容的元素應至少具有一個可感知的節點。

可感知元素包括:

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

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

表單關聯內容

表單關聯內容是流內容的一個子集,包含具有表單所有者(由form屬性公開)的元素,並且可以在期望流內容的任何地方使用。表單所有者要麼是包含的<form>元素,要麼是其id在form屬性中指定的元素。

表單關聯元素包括:

此類別包含多個子類別

已列出

form.elementsfieldset.elements集合中列出的元素。包含<button><fieldset><input><object><output><select><textarea>

可標記的

可以與<label>元素關聯的元素。包含<button><input><meter><output><progress><select><textarea>

可提交的

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

可重置的

重置表單時可能受到影響的元素。包含<input><output><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>