【问题标题】:What's the difference between <tag></tag> and <tag /> in HTML? [duplicate]HTML中的<tag></tag>和<tag />有什么区别? [复制]
【发布时间】:2012-05-30 08:50:44
【问题描述】:

可能重复:
Using the XHTML closing slash (/) on normal tags?
Are self-closing tags valid in HTML5?

我正在审查大量 HTML 代码以及合成 HTML 的 JavaScript,我注意到如果标签内有一些没有内容的标签,那么有两种方法可以指定它。像这样:

<div id="container"></div>

或者像这样:

<div id="container" />

这两者有区别吗?

【问题讨论】:

  • 享有如此高的声誉,我怀疑这是一个合理的问题,不应关闭。我一直想知道为什么自闭标签并不总是像你期望的那样工作(比如在包含 js 时不能使用自闭脚本标签)
  • 其他问题询问是否可能,这个问题询问有什么区别。这不是骗子。
  • @zzzzBov — 虽然问题略有不同,但足够接近Are self-closing tags valid in HTML5? 上接受的答案也回答了这个问题。

标签: html tags formatting


【解决方案1】:

浏览器将无效标记标准化为有效形式:

&lt;div /&gt; 在技术上是无效标记 (HTML 5),因为 div 不是自闭合标签。

浏览器会将其规范化为&lt;div&gt;

请注意,这与 XML 处理自闭合标签和闭合标签的方式不同。

自闭合标签没有子标签,也没有内部文本的值(null):

<foo />

封闭标签没有子标签,也没有内部文本(空字符串):

<foo></foo>

【讨论】:

  • &lt;div /&gt; 是完全有效的 HTML 2/3/4。浏览器不能很好地支持它。它将(根据 HTML 5 解析算法中的纠错规则(代表浏览器多年来所做的事情))标准化为 &lt;div&gt; 而不是 &lt;div&gt;&lt;/div&gt;
  • @Quentin,我在规范化位上的错误。我应该指定 HTML5,因为这就是我现在所关心的。
【解决方案2】:

&lt;div id="container"/&gt; 是编写不包含内容的标签的正确 XHTML 方式。通常这些是&lt;img/&gt;&lt;br/&gt; 等。 &lt;div&gt; 的目的是在其中包含内容,所以说 &lt;div id="container"/&gt; 虽然可以接受,但似乎不太可读。

【讨论】:

  • 这是一种一种编写没有内容的元素的方式。这并没有比&lt;div&gt;&lt;/div&gt; 更好或更差……除非您正在处理HTML 兼容性规则(在这种情况下&lt;div/&gt; 是不可接受的)。问题是关于 HTML,而不是 XHTML。
【解决方案3】:

第一个例子是严格的 HTML,第二个例子是严格的 xHTML。

在 HTML5 之前,当您必须指定是使用 HTML 还是 xHTML 时,使用错误的语法会导致验证错误,有时还会导致呈现问题。使用 HTML5 doctype 没有实际意义。

其次,第二个例子是一个自闭合标签,在本例中是一个空的div,但xHTML 规范中的许多标签都支持它,包括imglinkmeta 和否则为空的任何其他标记。

【讨论】:

  • 没有。 &lt;div /&gt; 在 HTML 5 中是不允许的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-10
  • 2012-08-12
  • 2020-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多