我尝试过检查其他答案,但我仍然感到困惑——尤其是在看到W3schools HTML5参考之后。

我认为HTML4.01应该“允许”单个标记仅为<img>和<br>。然后XHTML与<img/>和<br/>一起出现(有人说旧版浏览器的空间很大)。

现在我想知道在练习HTML5时应该如何格式化代码。

是<br>、<br/>还是<br/>?


当前回答

我认为HTML 5参考草案中的这句话提供了答案:

3.2.2.2空隙元件术语void元素用于指定必须为空的元素。这些要求仅适用于HTML语法。在XHTML中,所有这些元素都被视为普通元素,但必须标记为空元素。这些元素完全禁止包含任何内容。在HTML中,这些元素只有开始标记。可以使用自动关闭标记语法。必须省略结束标记,因为元素由解析器自动关闭。HTML示例:HTML语法中的void元素。XHTML语法中不允许这样做。<小时>例子:使用HTML和XHTML兼容的自动关闭标记语法的void元素。<hr/>XHTML示例:使用带有显式结束标记的仅XHTML语法的void元素。这对于HTML语法中的void元素是不允许的。<hr></hr>

换句话说:

无效的HTML 5:<IMG></IMG>有效的HTML 5:<IMG>,<IMG/>

虽然HTML禁止某些结束标记,但xhtml要求它们:

xhtml:<img>无效有效的xhtml:<img></img>或<img/>

HTML中禁止使用结束标记的其他元素:

Element Valid HTML Valid xhtml
AREA <AREA> <AREA></AREA>
BASE <BASE> <BASE></BASE>
BASEFONT <BASEFONT> <BASEFONT></BASEFONT>
BR <BR> <BR></BR>
COL <COL> <COL></COL>
FRAME <FRAME> <FRAME></FRAME>
HR <HR> <HR></HR>
IMG <IMG> <IMG></IMG>
INPUT <INPUT> <INPUT></INPUT>
ISINDEX <ISINDEX> <ISINDEX></ISINDEX>
LINK <LINK> <LINK></LINK>
META <META> <META></META>
PARAM <PARAM> <PARAM></PARAM>

HTML禁止某些结束标记,而xhtml需要这些标记,这是xhtml的问题。如果您正在编写HTML,请遵循HTML规则。

与此同时,布罗沃斯放弃了执行这些标准,因为每个人都错了。这并不明显:

禁止</BR></P>是可选的需要</SPAN>

然后xhtml出现了,它的XML规则是每个元素都必须有一个结束标记,人们只是认为HTML是一样的。因此,这些标准放弃了,后来进行了修改,向现实伸出了双手。

其他回答

如果你对可比性(不是兼容性,而是可比性)感兴趣,那么我会坚持<br/>。

否则,<br>没问题。

我认为HTML 5参考草案中的这句话提供了答案:

3.2.2.2空隙元件术语void元素用于指定必须为空的元素。这些要求仅适用于HTML语法。在XHTML中,所有这些元素都被视为普通元素,但必须标记为空元素。这些元素完全禁止包含任何内容。在HTML中,这些元素只有开始标记。可以使用自动关闭标记语法。必须省略结束标记,因为元素由解析器自动关闭。HTML示例:HTML语法中的void元素。XHTML语法中不允许这样做。<小时>例子:使用HTML和XHTML兼容的自动关闭标记语法的void元素。<hr/>XHTML示例:使用带有显式结束标记的仅XHTML语法的void元素。这对于HTML语法中的void元素是不允许的。<hr></hr>

换句话说:

无效的HTML 5:<IMG></IMG>有效的HTML 5:<IMG>,<IMG/>

虽然HTML禁止某些结束标记,但xhtml要求它们:

xhtml:<img>无效有效的xhtml:<img></img>或<img/>

HTML中禁止使用结束标记的其他元素:

Element Valid HTML Valid xhtml
AREA <AREA> <AREA></AREA>
BASE <BASE> <BASE></BASE>
BASEFONT <BASEFONT> <BASEFONT></BASEFONT>
BR <BR> <BR></BR>
COL <COL> <COL></COL>
FRAME <FRAME> <FRAME></FRAME>
HR <HR> <HR></HR>
IMG <IMG> <IMG></IMG>
INPUT <INPUT> <INPUT></INPUT>
ISINDEX <ISINDEX> <ISINDEX></ISINDEX>
LINK <LINK> <LINK></LINK>
META <META> <META></META>
PARAM <PARAM> <PARAM></PARAM>

HTML禁止某些结束标记,而xhtml需要这些标记,这是xhtml的问题。如果您正在编写HTML,请遵循HTML规则。

与此同时,布罗沃斯放弃了执行这些标准,因为每个人都错了。这并不明显:

禁止</BR></P>是可选的需要</SPAN>

然后xhtml出现了,它的XML规则是每个元素都必须有一个结束标记,人们只是认为HTML是一样的。因此,这些标准放弃了,后来进行了修改,向现实伸出了双手。

出于以下原因,我建议使用<br/>:

1) 以不同颜色突出显示XML语法的文本和XML编辑器将使用<br/>正确突出显示,但如果使用<br/

2) <br/>与XHTML向后兼容,格式良好的HTML(即XHTML)通常更容易验证错误和调试

3) 一些旧的解析器和一些编码规范要求在结束斜杠之前有空格(即:<br/>而不是<br/>),例如WordPress插件编码规范:http://make.wordpress.org/core/handbook/coding-standards/html/

根据我的经验,我从未遇到过使用<br/>有问题的情况,但是,在许多情况下,<br/>或特别是<br/>在旧浏览器和工具中可能有问题。

在HTML中的大多数情况下,标记是成对的。但对于换行符,您不需要一对标记。因此,为了表明这一点,HTML使用<br/>格式<br/>是正确的。使用该格式。

<br>标记在HTML中没有结束标记在XHTML中,<br>标记必须正确关闭,如下所示:<br/>

在XML中,每个标记都必须关闭。XHTML是XML的扩展,因此有效的XHTML必须遵循XML的所有规则。因此,即使是空标记(没有子节点的节点)也应该关闭。XML有一种简短的形式,称为空节点的自关闭标记。您可以将<br></br>写成<br/>。因此,在XHTML中使用<br/>。

HTML在这方面非常宽松,没有这样的规则。因此,在HTML中,像<br><hr><meta>等空节点都是不带右正斜杠的。

HTML

<br>
<hr>
<meta name="keywords" content="">
<link rel="canonical" href="http://www.google.com/">

XHTML语言

<br />
<hr />
<meta name="keywords" content="" />
<link rel="canonical" href="http://www.google.com/" />

并非所有标签都可以自动关闭。例如,XHTML DTD不允许使用<script src=“jQuery.min.js”/>这样的标记。

根据规范,HTML 5的预期格式是<br>,但允许使用右斜杠。