为什么有时需要结束标签,有时不需要?

时间:2011-06-13 01:37:42

标签: html tags end-tag

为什么某些html开启/开始标记需要结束/结束标记?

例如,<script> requires一个</script>,而<img> can (in fact, must) be self-closing<img src="path.jpg" />)?

我认为这与要求开始和结束标记之间的内容有关,但是以<script>为例,<script src="file.js"></script>之间不需要任何内容​​......

我问,因为我花了很多时间试图弄清楚为什么我所包含的脚本在Safari中工作但在FF或Chrome中没有。这是因为我错误地自我关闭了脚本标签。的Bleh。

2 个答案:

答案 0 :(得分:4)

自闭标签存在的原因是某些元素自然不会有标签之间的内容。例如,考虑<br /标记。什么时候<br></br>会有用?这真的只是浪费了角色空间和时间。这种语法源于XML语法,并成为XHTML的一部分。

确定哪些标签可以/应该自动关闭是浏览器中的HTML解析器。您正在使用的版本的HTML规范应该定义事物的处理方式,但当然我们都知道它不一定是这种情况。

这是一篇关于HTML5(以及过去版本)中自闭标签的精彩文章供您参考。

  

http://tiffanybbrown.com/2011/03/23/html5-does-not-allow-self-closing-tags/

答案 1 :(得分:4)

实际上有效的HTML4和HTML5可以省略各种各样的结束标记(但不包括XHTML)。以下是完整列表:http://www.w3.org/TR/html5/syntax.html#optional-tags

此外还有几个虚空元素根本无法拥有任何内容(如img)。这是一个列表: http://www.w3.org/TR/html5/syntax.html#void-elements

至于脚本标签,有一个很好的Stack Overflow讨论: Why don't self-closing script tags work?