內容類別
大多數 HTML 元素屬於一個或多個 **內容類別** - 這些類別對共享共同特徵的元素進行分組。這是一個鬆散的分組(它實際上並沒有在這些類別的元素之間建立關係),但它們有助於定義和描述類別的共享行為及其關聯規則,尤其是在您遇到其複雜細節時。元素也可能不屬於這些類別中的 *任何* 一個。
內容類別有三種
- 主要內容類別,描述許多元素共享的通用規則。
- 表單相關內容類別,描述表單相關元素共有的規則。
- 特定內容類別,描述一些元素(有時僅在特定上下文中)共享的罕見類別。
注意:本文件不包含對這些內容類別及其比較功能的詳細討論;如需瞭解詳細資訊,您可以閱讀HTML 規範的相關部分。
主要內容類別
元資料內容
屬於元資料內容類別的元素會修改文件其餘部分的呈現方式或行為,設定到其他文件的連結,或傳達其他帶外資訊。所有位於<head> 中的內容,包括<title>、<link>、<script>、<style>以及較少使用的<base>,都是元資料內容。對於無法透過這些其他元素表示的元資料,可以使用<meta>元素。
元資料元素包括:
某些元素屬於多個內容類別。例如,<script>是元資料、流和短語內容類別的成員,並且是一個支援指令碼的元素;在期望元資料內容、短語內容或支援指令碼的元素的地方,都可以使用<script>。
流內容
流內容是一個廣泛的類別,包含大多數可以放在<body>元素內部的元素,包括標題元素、分段元素、短語元素、嵌入元素、互動式元素和表單相關元素。它還包括文字節點(但不包括僅由空白字元組成的文字節點)。
流元素包括:
<a><abbr><address><article><aside><audio><b><bdo><bdi><blockquote><br><button><canvas><cite><code><data><datalist><del><details><dfn><dialog><div><dl><em><embed><fieldset><figure><footer><form><h1>-<h6><header><hgroup><hr><i><iframe><img><input><ins><kbd><label><main><map><mark><math><menu><meter><nav><noscript><object><ol><output><p><picture><pre><progress><q><ruby><s><samp><search><script><section><select><slot><small><span><strong><sub><sup><svg><table><template><textarea><time><u><ul><var><video><wbr>- 純文字
其他一些元素也屬於此類別,但前提是必須滿足特定條件
分段內容
標題內容
短語內容
短語內容是流內容的一個子集,指的是文件中的文字和標記。短語內容的序列構成段落。
短語元素包括:
<abbr><audio><b><bdi><bdo><br><button><canvas><cite><code><data><datalist><dfn><em><embed><i><iframe><img><input><kbd><label><mark><math><meter><noscript><object><output><picture><progress><q><ruby><s><samp><script><select><slot><small><span><strong><sub><sup><svg><template><textarea><time><u><var><video><wbr>- 純文字(包括不僅僅是空白字元的文字)
其他一些元素也屬於此類別,但前提是必須滿足特定條件
嵌入內容
互動式內容
可感知內容
當內容既不為空也不隱藏時,它就是可感知的;它是呈現且具有實質內容的內容。模型為流內容的元素應至少具有一個可感知的節點。
可感知元素包括:
<a><abbr><address><article><aside><b><bdi><bdo><blockquote><button><canvas><cite><code><data><del><details><dfn><div><em><embed><fieldset><footer><figure><form><iframe><img><ins><kbd><label><main><map><mark>- 來自MathML的
<math> <meter><nav><object><p><picture><pre><progress><q><ruby><s><samp><search><section><select><small><span><strong><sub><sup>- 來自SVG的
<svg> <table><textarea><time><u><var><video>- 自主自定義元素
- 不是元素間空白字元的文字
某些元素僅在特定條件下屬於此類別
表單關聯內容
表單關聯內容是流內容的一個子集,包含具有表單所有者(由form屬性公開)的元素,並且可以在期望流內容的任何地方使用。表單所有者要麼是包含的<form>元素,要麼是其id在form屬性中指定的元素。
表單關聯元素包括:
此類別包含多個子類別
- 已列出
-
在
form.elements和fieldset.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。
<p><del>Shopping</del> <ins>Returns</ins> list</p>
<ul>
<del>
<li>Oranges</li>
<li>Toilet paper</li>
</del>
<li>Toothpaste</li>
</ul>
如果刪除了這些元素,則此片段仍然是有效的 HTML(即使不是正確的英語)。
<p>Shopping Returns list</p>
<ul>
<li>Oranges</li>
<li>Toilet paper</li>
<li>Toothpaste</li>
</ul>