为什么有些HTML5代码必须包含起始和结束标记,而不是使用/>?自行关闭它们?

时间:2015-10-22 14:01:21

标签: html html5

在HTML5中,即使内容为空,也有标签必须有开始和结束标记:

<script></script>   <!-- Right way. -->
<div></div>         <!-- Right way. -->
<content></content> <!-- Right way. -->

<script/>  <!-- Wrong way. -->
<div/>     <!-- Wrong way. -->
<content/> <!-- Wrong way. -->

在XML中,这种差异并不存在: <node/><node></node>是同一个实体。

为什么像scriptdivcontent这样的标记不能简单地定义为: <script/><div/><content/>

5 个答案:

答案 0 :(得分:4)

From the w3c

  

自闭标记是带斜杠的特殊形式的开始标记   在关闭直角支架前。这些表明   该元素将立即关闭,并且没有内容。   在允许和使用此语法的情况下,必须省略结束标记。   在HTML中,此语法的使用仅限于void元素和   外国元素。如果它用于其他元素,则将其视为a   开始标记。在XHTML中,任何元素都可以使用它   句法。但请注意,它只符合包含内容的元素   允许它们为空的模型。

您列出的示例通常包含内容,JavaScript或其他元素,因此使用正确的开始和结束标记可以界定这些元素/标记的范围。

答案 1 :(得分:2)

仅仅因为它们基本上是一些&#34;容器&#34;其他元素。

有些元素没有被用作其他元素的父元素,比如img或base,这个元素可以在没有带有尾随/&gt;的结束标记的情况下关闭,但是没有必要。 / p>

答案 2 :(得分:1)

这些(空白元素)可能会以/>

终止

area, base, br, col, embed, hr, img, input, keygen, link, menuitem, meta, param, source, track, wbr

然而它是可选的和不相关的:

  

此角色对空白元素没有影响

MathML / SVG标记可能会以/>结尾,以表示自我结束标记。

HTML5 Ref

答案 3 :(得分:0)

在HTML5规范中,某些标签被声明为&#34;自我关闭&#34;,而某些标签则没有。

script标记是特殊的。当浏览器请求javascript文件(在标记的src属性中给出)时,它将复制script标记中的javascript文件内容。如果你自己关闭标签,浏览器就无法复制标签中的任何内容,因此javascript将不会被执行。

几年以来,HTML(尤其是HTML5)试图摆脱XML&#34; border&#34;。这就是为什么我们有属性布尔值(如disabledchecked)。

答案 4 :(得分:-1)

<script></script>   <!-- Right way. -->
<div></div>         <!-- Right way. -->
<content></content> <!-- Right way. -->

在所有这三种情况中,都有无限量的内容可以驻留在标记内。

有类似的东西:

<input type="text" velue="Hello" />
<img src="image.jpg" />

没有更多内容可以添加到这些内容中。因此,您只需在生成标记的同一点关闭标记即可。

所以,这不是“对错”的问题。这是标签实际用于什么的问题。

相关问题