2011-09-09 93 views
95

在HTML5中,我们还需要像XHTML一样的结束斜线吗?我们是否仍然需要HTML5中的结尾斜杠?

<img src="some_image.png" /> 

validator.w3.org没有抱怨,如果我放弃它,甚至没有警告。但是一些在线文档似乎表明对于诸如img,链接,meta,br等标签仍然需要结束斜线。

+4

*仍然*?任何版本的HTML都需要关闭所有标签吗? – Gabe

+7

@Gabe XHTML 1.0严格需要它。我的意思是,网页通常会正常加载,但它被认为是无效的。 – CaptSaltyJack

+2

是的,但X不仅仅是因为X很酷,HTML和XHTML之间还有相当大的差距。 – delnan

回答

71

img标签是无效元素,所以他们不需要结束标签。

空隙元件 区域,基,BR,山口,命令,嵌入,小时,IMG,输入,密钥生成,链接,间位,PARAM,源,跟踪,WBR

...

Void元素只有一个开始标签;不能为void元素指定结束标记。

W3C |​​

这就是说,它不是严格的HTML5解析,所以它不会造成任何重大伤害。

+0

只是好奇,因为我的编辑(科莫多)如果我输入''并按回车键。它预计在HTML5模式下的斜线,我想确保这是正确的行为。 – CaptSaltyJack

+5

这是HTML,而不是XHTML,所以不是必需的。幸运的是,解析器仍然能够理解XHTML风格的结尾符号,所以将其留在那里并没有什么坏处。如果需要,无论出于何种原因,均可方便地转换回XHTML。 – Nightfirecat

+0

这真的很奇怪。为什么'schema.org'在imgs上有结束标签?看看这里:'http:// schema.org/Person' –

1

没有。 HTML从来不需要它,甚至在HTML5之前。如果您打算使用HTML特性的XHTML,那么是的,这是必要的。

+1

XHTML与HTML5不一样,对吗?如果我的DOCTYPE只是“html”,我不需要后面的斜线,对吗? – CaptSaltyJack

+0

@CaptSaltyJack:正确。 – Ryan

+0

@CaptSaltyJack - HTML5涵盖了普通的HTML和XHTML。 XHTML要求关闭所有元素,但对于浏览器,文档类型不会影响情况。有关更全面的解释,请参阅http://stackoverflow.com/questions/2662508/html-4-html-5-xhtml-mime-types-the-definitive-resource/2664082#2664082 – Alohci

-13

必须关闭所有标签(通过自行关闭或单独关闭操作)。其中一些(如<p>标签)需要单独的结束标签。记住,所有标签必须关闭或浏览器(如果严格遵守)将会出现错误。这意味着,即使在开始和结束之间没有内容的标签,也必须以某种方式关闭。下面我会看看<img>标签,因为它没有任何内容在打开和关闭之间。

在HTML4中它是自闭的。这并不意味着它不会关闭,因为所有标签都必须关闭。它只是通过它的存在而自我封闭。因此,在HTML4的<img>标签很简单: <img>

在XHTML中它是不是自闭。这意味着你必须提供一个单独的结束标记是这样的: <img></img>

然后在HTML5有人终于得到了智能,并决定将关闭不具备开合,一个非常简单的任务之间内容的标记。只使用一个标记,但在大于号之前有一个斜杠,如下所示: <img />

这也完全向后兼容HTML4。如果您不使用XHTML(需要单独的结束标记)并且不确定您的代码是否使用HTML4或HTML5标准。你最好的选择是总是在大于符号之前有一个结束斜线,以便在打开和关闭之间没有内容的标记。这样它会永远在每个浏览器中正确显示。

下面是一个正确编写的HTML代码示例,它与所有浏览器具有高度的兼容性。

<!DOCTYPE html> 
<html> 
<head> 
<title>test website</title> 
</head> 
<body> 
<p>This is a test.</p> 
<img src="testpic.jpg" /> 
</body> 
</html> 
+5

您能否引用:我很确定这一信息不正确,永远不会有效,无论文档类型如何。 – CherryFlavourPez

+2

@CherryFlavourPez这个信息是非常错误的,应该被忽略。然而,为了澄清在XHMTL中重新编号为''的情况。是的,这是有效的XHMTL,但要让浏览器正确解析它,它必须以XML MIME类型发送:application/xhtml + xml。 http://www.w3.org/International/articles/serving-xhtml/即使你设置了正确的DOCTYPE,如果你的web服务器发送HTML页面为MIME:text/html,客户端浏览器将使用HTML解析器,并且可能得到困惑。因此,建议在XHTML中使用''。请注意,这与答案所说的相矛盾。 – ToolmakerSteve

63

在HTML 5中,结束斜杠是无效元素可选这样img(我加入这个,因为目前公认的答案只是说:“结束标签不得为空元素指定”,并执行没有解决void元素中的关闭斜杠)。

http://www.w3.org/TR/html5/syntax.html#start-tags援引(数6):

然后,如果该元素是空元素之一,或如果元件是一个外来元素,则有可能是一个单一的“/”(U + 002F)字符。这个字符对空元素没有影响,但是在外部元素上,它将开始标记标记为自闭。

0

FROM W3C:

空隙元素:面积,碱,BR,山口,嵌入,小时,IMG,输入,密钥生成,链接,间位,PARAM,源,跟踪,WBR

“空元素只有一个开始标记;不能为空元素指定结束标记。“

http://www.w3.org/TR/html5/syntax.html#void-elements