HTML5中的自闭合标签(空元素)

30

HTML5规范的8.1.2.1开始标签第6步指出,空元素可以有一个单独的/字符。我认为这样做是为了更容易将XHTML网站迁移到HTML5。

最佳实践是什么?

例如,如果我正在使用HTML5 (<! DOCTYPE html>) 制作网站,我应该怎么做?

  1. 不使用斜杠

  2. <meta http-equiv="content-type" content="text/html; charset=utf-8">
    
  3. 带斜杆

  4. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    
    如果两种写法在所有浏览器上都能正确呈现,那么我认为(1)不使用斜杠的写法更符合HTML5标准。

5
只是提醒一下...在HTML5中,您可以使用以下代码替换大型元声明:<meta charset=utf-8>(这是一个简写,专门用于此目的,并且是有效的等效替代)。 - Camilo Martin
5个回答

25

关于最佳实践,目前没有达成共识。根据规范的作者 Ian Hickson 的说法,这并不重要。


2
你有Ian Hickson表明这个立场的链接吗? - commadelimited
3
好的,我将为您进行翻译。以下是要翻译的内容:http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2006-December/008235.html和http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2006-December/008312.html,请参见本主题中的其他答案。这段话意思是:请参考这两个链接,以及本主题中的其他回答。 - Gaurav
1
它们两个都有效(对于HTML,不是XHTML),添加/只是增加要下载的更多字符。 - Darren Griffith
好观点,但通常官方规范定义和浏览器实现之间存在差异。有人有展示浏览器兼容性的好资源吗? - Sliq
慌乱 - 所有浏览器都“支持”HTML中的/>,即使在版本4之前它是无效的HTML - 为了向后兼容最早的Netscape版本并且因为/>在整个网络上被广泛使用。您不会找到兼容性表,因为它不需要,没有任何广泛使用的浏览器会出现问题。 - Gaurav

19
使用斜杠关闭标签是更明确的方式,表示该标签不应该有结束标签。

16

主要取决于您是否想采用XML方法。两者都应该正确呈现,因为HTML5规范不需要自闭合标签,它们的唯一原因是文档符合有效的XML规范。

更简单的方法可能就是不使用自闭合"/"进行编写,除非有特定需要将标记解析为XML - 在这种情况下,您还需要

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >

只是为了澄清。你所说的“在那种情况下”,是指针对XML吗? - ma11hew28
是的。XML需要一个命名空间,这就为HTML文档提供了一个XML命名空间。 - Shadikka

14

谷歌在其style guide中建议:不要关闭空元素。

对于所有HTML文档,首选HTML5(HTML语法)...虽然HTML兼容,但不要关闭空元素

个人而言,我已经习惯了使用斜杠关闭标签,并发现/>帮助我认识到该标签将没有结束标记。


3
关于你最后一句话 - 它没有闭合标签,因为它是一个空元素。这个斜线对于像我这样的 HTML 新手来说很容易引起困惑,因为它的存在暗示着斜线会关闭元素。 - Tom
4
我认为闭合标签可以帮助识别空元素(请参考@nbsp的回答)。对于新手来说可能会有些困惑,但这是一个重要的语法知识,因为如果/当你需要处理XML或XHTML时,你很可能会遇到它。 - Luke

6

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接