我正在学习 HTML5,我想知道为什么这些元素的关闭方式不同,第一个输入以 > 结尾,第二个以 /> 结尾,这有什么区别?
<input name = "howtosite" type = "radio"
value = "search engine" checked>
<input type = "color" autofocus />
(Hexadecimal code such as #ADD8E6)
我正在学习 HTML5,我想知道为什么这些元素的关闭方式不同,第一个输入以 > 结尾,第二个以 /> 结尾,这有什么区别?
<input name = "howtosite" type = "radio"
value = "search engine" checked>
<input type = "color" autofocus />
(Hexadecimal code such as #ADD8E6)
简而言之,一些术语:令人困惑的是,“HTML”现在意味着两件事:
div
及其用途。div
这样的元素:<div>content</div>
.HTML 的另一个序列化是 XHTML。这两个序列化的地方不同,因为 XHTML 是 XML。
HTML 定义了一些没有内容的元素,例如<br>
,而在 HTML 序列化中它们通常是这样写的,<br>
. 在 XHTML 序列化中这是一个问题,因为 XML 要求所有标签都被关闭并且<br>
只是一个开始标签。将斜杠(“solidus”)放在结尾>
关闭标记之前,因此在 XHTML 中,<br>
变为<br/>
. 在HTML 序列化中/
是可以容忍的,但它没有任何作用。它仅在 XHTML 中起作用。(请注意,在非常非常古老的浏览器中,您可能需要在固线之前有一个空格,例如<br />
,但我们确实在谈论非常古老的内容。)
这仅适用于void 元素<br>
,例如<input>
永远没有任何内容的元素和外来元素(MathML 和 SVG)。<div/>
例如,即使div
是空的,你也永远不会写。空的正确形式div
总是<div></div>
(无论是在 HTML 还是 XHTML 序列化中)。
因此,关于您的两个具体示例:第一个仅在 HTML 序列化中有效。第二种在 HTML 序列化中也有效,如果autofocus
属性有值,则在 XHTML 序列化中也有效(在 XML 中,属性必须有值,所以你必须写autofocus="autofocus"
)。