HTML5:是使用<br>、<br/> 还是 <br />?

2201
18个回答

1828

简单地说,<br> 就足够了。

其他形式是为了与 XHTML 兼容;这样可以编写相同的代码作为 XHTML,并且也能作为 HTML 工作。一些生成 HTML 的系统可能基于 XML 生成器,因此没有能力仅输出裸的 <br> 标签;如果您正在使用这样的系统,则使用 <br/> 是可以的,但如果不需要这样做,则不必这样做。

XHTML 并不常用。在这种情况下,内容需要作为 application/xhtml+xml 提供才能被解释为 XHTML,而这在旧版本的 IE 中无法工作 - 这也意味着任何小的验证错误都会阻止页面显示。因此,大多数看起来像 XHTML 的网络实际上是作为 HTML 提供和解释的。请参见 Serving XHTML as text/html Considered Harmful 获取更多信息。


12
阅读了这篇自闭合标签文章,并在控制台中检查了代码后,我了解到在HTML5中即使你编写<br/><br />它们最终也会被浏览器转换为<br> - Satish Chandra Gupta
然而,在HTML中这种现象是允许的,但在SVG中严格禁止; - falselight

321
我认为这句话来自HTML5标准,提供了答案:

3.2.2.2 Void Elements

The term void elements is used to designate elements that must be empty. These requirements only apply to the HTML syntax. In XHTML, all such elements are treated as normal elements, but must be marked up as empty elements.

These elements are forbidden from containing any content at all. In HTML, these elements have a start tag only. The self-closing tag syntax may be used. The end tag must be omitted because the element is automatically closed by the parser.

HTML Example:
A void element in the HTML syntax. This is not permitted in the XHTML syntax.

<hr>

Example:
A void element using the HTML- and XHTML-compatible self-closing tag syntax.

<hr/>

XHTML Example:
A void element using the XHTML-only syntax with an explicit end tag. This is not permitted for void elements in the HTML syntax.

<hr></hr>

换句话说:

  • 无效的HTML5<IMG></IMG>
  • 有效的HTML5<IMG><IMG/>

而且,虽然HTML禁止某些闭合标签,但XHTML要求它们:

  • 无效的XHTML<img>
  • 有效的XHTML<img></img><img/>

其他在HTML中禁止使用闭合标签的元素:

元素 有效的HTML 有效的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也是一样的。所以标准放弃了,并在后来修订时对现实情况表示无奈。

18
对我来说似乎很具体。 <br> 和 <br /> 都是合法的 HTML5。 - William Denniss

157
XML不允许标签未闭合,所以使<br>比其他两个差一些。其他两个大致等同,第二个(<br/>)更适合与旧浏览器兼容。实际上,在"/"前加空格是为了兼容性而更受欢迎,但我认为只有具有属性的标签才有意义。因此,我会说要么使用<br/>,要么使用<br />,取决于您的审美观。
总之:所有三种都是有效的,第一个(<br>)稍微不太“便携”。
编辑:现在我们都疯狂地关注规范,我认为值得指出的是,根据dev.w3.org:
引用: 开始标记由以下部分组成,按照以下顺序: 1.一个“<”字符。 2.元素的标记名称。 3.可选地,一个或多个属性,每个属性必须 在一个或多个空格字符之前。 4.可选地,一个或多个空格字符。 5.可选地,一个“/”字符,仅当元素是空元素时才可能存在。 6.一个“>”字符。

132
在HTML(HTML 4及以下版本)中:使用<br> 在HTML 5中:推荐使用<br>,但<br/><br />也可以接受
在XHTML中:推荐使用<br />。也可以使用<br/><br></br> 注意: <br></br>在HTML 5中无效,会被视为两个换行符。
XHTML区分大小写,而HTML不区分大小写。
为了向后兼容,一些旧浏览器会将XHTML解析为HTML,并在<br/>失败时而不是<br />
参考资料:

4
为了澄清,对于符合XML语法的写法,<br/>和带有空格的<br />是等价的,在其中没有偏好。参见XML 1.0规范。 />之前的空白(空格、制表符或换行符)是可选的,并且没有任何偏好。 - Basil Bourque
2
你能引用一下非XML语法在HTML5中更受欢迎的参考资料吗?这对我来说是新闻。据我所知,HTML5的一个创始目标是支持严格的XML符合性。也许我在whatwg.org的HTML vs. XHTML文档或W3C的Polyglot Markup: A robust profile of the HTML5 vocabulary文档中错过了什么。 - Basil Bourque
1
@BasilBourque 重申我之前对您所说的。阅读HTML5标签和元素的实际规范,你永远不会找到任何建议或建议去要求或建议使用封闭斜线来结束那些标签。如果你想使用XML或XHTML,那么你就不是在使用HTML,这是一个不同的故事。不要为那些HTML标记使用封闭斜线。在其他地方,规范说明你可以在那里放一个,但它没有意义,也没有作用,并且浏览器被指示忽略它。所以它毫无意义和用处,就像毫无意义和用处一样。 - Rob
@Rob,第8.1.2.1节开始标签在由W3C发布的HTML 5.2 W3C推荐,2017年12月14日文件的第8节HTML语法中,并不是HTML的实际规范吗?请指教。 - Basil Bourque
@PetrBodnár 这不是建议或格式,而是标准和语法。你要么遵循它,要么就是错误的。但是 OP 想使用 HTML 而不是 XML。如果想同时兼容 XML,那么就会引发一系列问题。服务器必须指定它正在提供 XML 而不是 HTML。还需要确保在 HTML 中遵循所有 XML 规则,而许多人并没有这样做。但是,如果他们不提供 XML,为什么要兼容 XML?这根本没有任何意义。这是一种不同的技术。 - Rob
显示剩余4条评论

62
根据规范,HTML 5 中预期的形式是 <br>,但允许使用闭合斜杠。

48

出于以下原因,我建议使用<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>可能会有问题。


9
符合规范的HTML并不等同于XHTML。 - jmarkmurphy
4
XHTML被定义为格式良好的HTML。根据w3schools,XHTML遵循XML的规则,“XML是一种标记语言,文档必须被正确标记(“格式良好”)... ...通过结合HTML和XML的优点,开发了XHTML。 XHTML是作为XML重新设计的HTML。”(参见https://www.w3schools.com/html/html_xhtml.asp) - Kmeixner
5
HTML可以是格式良好的,但不一定是有效的XML。W3Schools并不总是最权威的参考资料。 - jmarkmurphy
2
<br>和<hr>是完全有效且格式良好的HTML。它们不是有效的XML标签。HTML语法下的HTML规范表明,空元素(如<br>或<hr>)可能在最后一个>之前立即带有/字符。但它没有任何影响。如果存在,则会被忽略。如果/是语法的首选部分,则标准会使用“应该”而不是“可能”。 - jmarkmurphy
4
@jmarkmurphy,我认为你可能不熟悉“well-formed”的术语,它是一个技术术语,用于指代XML和XHTML标准的要求,即所有标签必须有闭合标签并且必须按正确的顺序嵌套。 <hr> 和 <br> 不符合XML和XHTML的要求,因为它们没有闭合标签,例如:<br /> 或 <br></br> 是有效的,而 <br> 不是有效的XHTML或XML。当然,HTML没有“well-formed”要求,因此 <br> 和 <hr> 只在HTML中有效。 - Kmeixner
显示剩余2条评论

25

XML要求所有标签都要有相应的关闭标签。因此,针对没有内部内容的标签有一种特殊的简写语法。

HTML5不是XML,因此不应该提出这样的要求。HTML 4.01也是如此。

例如,在HTML5规范中,所有使用 br 标签的示例都使用 <br> 语法,而不是 <br/>

UPD 实际上,<br/> 在HTML5中是允许使用的。9.1.2.1, 7。


3
“HTML5不是XML,因此不应该提出这样的要求。” 这句话的正确性取决于对“HTML5”一词的诠释。如果我们将HTML5视为语言,则该说法是正确的。然而,如果我们将HTML5视为规范,则该说法是不正确的。HTML5规范定义了“HTML和XHTML的词汇表和相关API”。我知道这有点挑剔,我并不是说这个答案是错的,只是为读者提供额外的信息。 - Christian Hujer

18

如果您对比较性感兴趣(不是兼容性,而是比较性),那么我建议使用<br />

否则,<br>也可以。


17

<br><br />在HTML5中都是可接受的,但根据HTML的精神,应使用<br>。HTML5允许在结束标记中添加斜线以更好地兼容之前的HTML 4.01和XHTML 1.0文档,并使迁移到HTML5更加容易。当然,<br/>也是可以接受的,但为了与一些旧版本的浏览器兼容,结束标记前应该有一个空格 (/)。


2
@Knickerless-Noggins 我不确定你在哪里看到的,但 <br /> 是完全可以接受的,而 W3Schools 不是 HTML 规范。请参阅 HTML5 规范,其中 明确 指出:“然后,如果元素是 空元素 之一,或者如果元素是 外部元素,则可能会有一个 单个 "/" (U+002F) 字符。[强调添加]” - Kevin Ji
1
这个答案和其他答案一样,错误地淡化了HTML5中严格XML符合性的合法性。对XML的支持不是一个临时的过渡或迁移功能。XML符合性的可选支持是HTML5的一个创始目标。对于使用XML工具处理其HTML内容的人来说,这是一个至关重要的功能。 - Basil Bourque

17
如果您在常规网站上输出HTML,可以使用<br><br/>,在服务HTML5作为text/html时两者都是有效的。如果您将HTML5作为XHTML(即内容类型为application/xhtml+xml,并带有XML声明)提供,则必须使用自闭合标签,例如:<br/>。如果不这样做,一些浏览器可能会拒绝呈现您的页面(Firefox特别严格,只呈现有效的xhtml+xml页面)。如1所述,<br/>对于生成为XML但作为常规text/html提供(例如从生成Web页面的XSL Transform或类似工具中),也是有效的。
为了消除混淆:在斜杠前加空格在HTML5中不是必需的,也不会对页面的呈现方式产生任何影响(如果有人能提供一个例子,我会撤回这个说法,但我不认为这是真的-但IE确实在所有形式的
标记中做了很多其他奇怪的事情)。 http://validator.w3.org上的优秀验证器非常有用,可以检查什么是有效的(尽管我不确定您是否可以依赖它来检查内容类型)。

等等,text/html的MIME类型是严格的XML? - amwinter
1
如果使用text/html,就不应该使用XML声明来提供它,但是内容可以是有效的XML(例如从输出XML的东西生成的,如XSLT输出或序列化为XML的对象)。 - Iain Collins
仍然不理解:如果text/html应该有<br />,那么何时应该使用未闭合的<br> - amwinter
3
我认为是Netscape Navigator 3或4不支持“<br/>”这个标记,但在当今时代这并不值得担心。 - robertc

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