我正在学习 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")。