(非無效)自動關閉標記在HTML5中有效嗎?

W3C驗證器不喜歡非void元素上的自閉標籤(以「 /> 」結尾的標籤)。 (無效元素是可能永遠不包含任何內容的元素。)它們在HTML5中仍然有效嗎? html

可接受的 void元素的一些示例: html5

<br />
<img src="" />
<input type="text" name="username" />

被拒絕的非空元素的一些示例: 瀏覽器

<div id="myDiv" />
<span id="mySpan" />
<textarea id="someTextMessage" />

注意: W3C驗證器實際上接受無效的自動關閉標籤:做者最初因出現簡單的錯字\\>而不是/> )而遇到問題可是,自關閉標籤在HTML5中一般不是100%有效的,答案詳細說明了各類HTML樣式的自關閉標籤。 服務器


#1樓

  • HTML 4中<foo / (是,根本沒有> )表示<foo> (致使<br />表示<br>> (即<br>&gt; )和<title/hello/表示<title>hello</title> )。 這是一條SGML規則,瀏覽器在支持方面作得不好,而且該規範建議做者避免使用語法app

  • XHTML中<foo />表示<foo></foo> 。 這是一條適用於全部XML文檔的XML規則。 也就是說,XHT​​ML一般用做text/html ,至少在歷史上,XHTML是由瀏覽器使用與用做application/xhtml+xml文檔不一樣的解析器處理的。 W3C提供了XHTML做爲text/html遵循的兼容性指南 。 (本質上:僅當元素定義爲EMPTY時才使用自閉標籤語法(而且HTML規範中禁止使用結束標籤))。 ide

  • HTML5中<foo />的含義取決於元素的類型spa

    • 在被指定爲void元素的 HTML元素上(本質上是「在HTML5以前存在而且被禁止包含任何內容的元素」),最終標籤被簡單地禁止了。 開始標記末尾的斜槓是容許的,但沒有任何意義。 對於僅沉迷於XML的人(和語法突出顯示)來講,它只是語法糖。
    • 在其餘HTML元素上,斜槓是一個錯誤,可是錯誤恢復將致使瀏覽器將其忽略,並將標記視爲常規開始標記。 這一般會致使缺乏結束標記,從而致使後續元素成爲子元素而不是兄弟元素。
    • 外部元素(從SVG等XML應用程序導入)將其視爲自動關閉語法。

#2樓

自關閉標籤在HTML5中有效,但不是必需的。 code

<br><br />都很好。 xml


#3樓

HTML5的行爲基本上就像沒有尾部斜槓同樣。 HTML5語法中沒有自動關閉標記之類的東西。 htm

  • 非空元素(例如<p/><div/>上的自動關閉標籤根本沒法使用。 尾部的斜槓將被忽略,這些將被視爲開始標記。 這極可能致使嵌套問題。

    不管斜槓前面是否有空格,都是如此: <p /><div />出於相同的緣由也將不起做用。

  • <br/><img src="" alt=""/>這樣的void元素上的自閉合標籤起做用,但這僅是由於尾部的斜槓被忽略了,在這種狀況下碰巧會致使正確的行爲。

結果是,在舊的「 XHTML 1.0用做text / html」中工做的全部內容都將像之前同樣繼續工做:非空標記的尾部斜槓在那兒也不被接受,而void元素的尾部斜槓也能夠工做。

還有一點須要注意:能夠將HTML5文檔表示爲XML,有時也稱爲「 XHTML 5.0」。 在這種狀況下,將應用XML規則,而且將始終處理自閉合標籤。 它老是須要與XML mime類型一塊兒使用。


#4樓

我將很是當心自閉標籤,如本例所示:

var a = '<span/><span/>';
var d = document.createElement('div');
d.innerHTML = a
console.log(d.innerHTML) // "<span><span></span></span>"

個人直覺應該是<span></span><span></span>


#5樓

在實踐中,在HTML中使用自動關閉標籤應該能夠按預期工做。 可是,若是您擔憂編寫有效的 HTML5,則應該瞭解此類標記的使用在兩種可使用的兩種語法形式中的行爲方式。 HTML5定義了HTML語法和XHTML語法,它們類似但不相同。 使用哪種取決於Web服務器發送的媒體類型。

您的頁面頗有可能被用做text/html ,它遵循更寬鬆的HTML語法。 在這些狀況下,HTML5容許某些開始標記在終止>以前具備可選的/。 在這些狀況下,/是可選的而且被忽略,所以<hr><hr />相同。 HTML規範將這些稱爲「無效元素」,並給出有效列表。 嚴格來講,可選的/只在這些void元素的開始標記內有效; 例如, <br /><hr />是有效的HTML5,但<p />不是。

HTML5規範在HTML做者和Web瀏覽器開發人員的正確選擇之間進行了明確區分,第二組要求接受全部無效的「舊版」語法。 在這種狀況下,這意味着符合HTML5的瀏覽器將接受非法的自關閉標籤(例如<p /> ,並按您指望的方式呈現它們。 可是對於做者而言,該頁面不是有效的HTML5。 (更重要的是,DOM樹您使用這種非法語法的得到能夠認真搞砸了;自我封閉<span />標記,例如,傾向於把事情搞得一團糟了很多 )。

(在不尋常的狀況下,您的服務器知道如何將XHTML文件做爲XML MIME類型發送,該頁面須要符合XHTML DTD和XML語法。這意味着對於這樣定義的元素, 須要使用自動關閉標籤。)

相關文章
相關標籤/搜索