空元素
空元素是 HTML 中不能有任何子節點(即巢狀元素或文字節點)的元素。空元素只有開始標籤;空元素絕不能指定結束標籤。
在 HTML 中,空元素不能有結束標籤。例如,<input type="text"></input> 是無效的 HTML。相反,不能有任何子節點的 SVG 或 MathML 元素可以在其開始標籤中使用結束標籤,而不是 XML 自閉合標籤語法。
HTML、SVG 和 MathML 規範非常精確地定義了每個元素可以包含什麼。因此,某些標籤組合沒有語義。
儘管無法將空元素標記為具有任何子元素,但可以使用 JavaScript 以程式設計方式在 DOM 中將子節點新增到元素中。但這並不是一個好的做法,因為結果將不可靠。
HTML 中的空元素如下:
自閉合標籤
HTML 中不存在自閉合標籤(<tag />)。
如果 HTML 元素的開始標籤中存在尾隨的 /(斜槓)字元,HTML 解析器會忽略該斜槓字元。對於需要結束標籤的元素(例如 <script> 或 <ul>),記住這一點尤為重要。在這些情況下,在開始標籤中新增尾隨斜槓不會關閉元素。相反,尾隨斜槓被忽略,元素被視為開啟,直到遇到顯式關閉標籤,或者直到解析器根據 HTML 結構和解析規則隱式關閉元素。例如,在 <div/>Some text 的情況下,瀏覽器將其解釋為 <div>Some text</div>,將斜槓視為被忽略,並認為 div 元素包含後面的文字。
然而,一些程式碼格式化工具會在空元素的開始標籤中新增尾隨斜槓字元,以使其相容 XHTML 並更具可讀性。例如,一些程式碼格式化工具會將 <input type="text"> 轉換為 <input type="text" />。
XML、XHTML 和 SVG 中的空元素需要自閉合標籤(例如,<circle cx="50" cy="50" r="50" />)。
在 SVG 和 MathML 中,不允許有任何子節點的元素可以被標記為自閉合。在這種情況下,如果元素的開始標籤被標記為自閉合,則該元素絕不能有結束標籤。
注意:如果開始標籤中的尾隨 /(斜槓)字元直接位於未加引號的屬性值之後——中間沒有空格——則斜槓將成為屬性值的一部分,而不是被解析器丟棄。例如,標記 <img src=http://www.example.com/logo.svg/> 會導致 src 屬性的值為 http://www.example.com/logo.svg/——這會使 URL 錯誤。