首頁  >  問答  >  主體

HTML5是否允許使用非空白自閉合標籤?

<p>W3C驗證器(維基百科)不喜歡在非空元素上使用自閉合標籤(以“<code>/></code>”結尾的標籤)。 (空元素是那些永遠不會包含任何內容的元素。)它們在HTML5中是否仍然有效? </p> <p>一些被接受的空元素範例:</p> <pre class="brush:html;toolbar:false;"><br /> <img src="" /> <input type="text" name="username" /> </pre> <p>一些被拒絕的非空元素範例:</p> <pre class="brush:html;toolbar:false;"><div id="myDiv" /> <span id="mySpan" /> <textarea id="someTextMessage" /> </pre> <sub> <b>注意:</b> <p><br /></p><p> W3C驗證器實際上接受空的自閉合標籤:作者最初遇到問題是因為簡單的拼字錯誤(使用了<code>></code>而不是<code>/></code> ;);然而,自閉合標籤在HTML5中並不完全有效,答案詳細闡述了不同HTML版本中的自閉合標籤問題。 </p></sub>
P粉680487967P粉680487967425 天前582

全部回覆(2)我來回復

  • P粉762730205

    P粉7627302052023-08-22 12:17:28

    自閉合的div將無法驗證。這是因為div是一個普通元素,而不是一個空元素

    根據HTML5規格,不能包含任何內容的標籤(稱為空白元素)可以自閉合*。這包括以下標籤:

    area, base, br, col, embed, hr, img, input, 
    link, meta, param, source, track, wbr

    上述標籤上的「/」是完全可選的,因此<img/><img>沒有區別,但<img> ;</img>是無效的。

    *注意:外部元素也可以自閉合,但我認為這不在本答案的範圍內。

    回覆
    0
  • P粉113938880

    P粉1139388802023-08-22 12:03:24

    • 在理論上,HTML 4中,<foo /(是的,沒有任何>)的意思是<foo>(這導致<br />的意思是<br>>(即<br>>)和<title/hello/的意思是<title>hello</title>)。我使用術語“理論上”是因為這是一個SGML規則,瀏覽器對其支援得非常差。支援非常少(我只在emacs-w3m中看到過它起作用),以至於規範建議作者避免使用這種語法

    • XHTML中,<foo />的意思是<foo></foo>。這是適用於所有XML文件的XML規則。也就是說,XHTML通常以text/html的形式提供,這(至少在歷史上)由瀏覽器使用與以application/xhtml xml提供的文件不同的解析器處理。 W3C提供了關於XHTML作為text/html相容性指南。 (基本上:只有在元素被定義為EMPTY(並且在HTML規範中禁止了結束標籤)時,才使用自閉合標籤語法)。

    • HTML5中,<foo />的意思取決於元素的類型

      • 對於被指定為空元素(基本上是「在HTML5之前存在的元素,被禁止包含任何內容」),結束標籤是被禁止的。在開始標籤的末端加上斜線是允許的,但沒有意義。這只是對於習慣於XML的人(和語法高亮器)的語法糖。
      • 對於其他HTML元素,斜線是一個錯誤,但錯誤復原將導致瀏覽器忽略它並將標籤視為常規的開始標籤。這通常會導致缺少結束標籤,從而使後續元素成為子元素而不是兄弟元素。
      • 外部元素(從SVG等XML應用程式匯入)將其視為自閉合語法。

    回覆
    0
  • 取消回覆