1

我正在学习 HTML5,我想知道为什么这些元素的关闭方式不同,第一个输入以 > 结尾,第二个以 /> 结尾,这有什么区别?

<input name = "howtosite" type = "radio"
              value = "search engine" checked> 

<input type = "color" autofocus /> 
              (Hexadecimal code such as #ADD8E6)
4

1 回答 1

3

简而言之,一些术语:令人困惑的是,“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 序列化中)。

规范中的全部细节,特别是§8.1.2.1

因此,关于您的两个具体示例:第一个仅在 HTML 序列化中有效。第二种在 HTML 序列化中也有效,如果autofocus属性有值,则在 XHTML 序列化中也有效(在 XML 中,属性必须有值,所以你必须写autofocus="autofocus")。

于 2013-01-29T05:35:49.007 回答