HTML 5:是<br>,<br/>还是<br />?


2032

我尝试检查其他答案,但仍然感到困惑-特别是在看到W3schools HTML 5参考之后

我认为HTML 4.01应该“允许”单个标签为<img>and <br>。然后XHTML与<img />and 一起出现了<br />有人说那里是旧浏览器的空间)。

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

是不是<br><br/>还是<br />


无论您今天使用哪种,都请考虑一些辅助技术(例如屏幕阅读器)可能会宣布它。NVDA例如表示“空白”。屏幕阅读器用户很可能会从该额外公告中获得任何收益。考虑添加role="presentation"属性,除非在少数情况下换行符充当“内容”。
brennanyoung

根据当前规范“6。然后,如果该元素是void元素之一,或者如果该元素是外来元素,则可能只有一个U + 002F SOLIDUS字符(/)。此字符对void没有影响。元素” html.spec.whatwg.org/multipage/syntax.html#start-tags
Tim Abell,

Answers:


1543

简单地<br>就足够了。

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

但是,实际上很少有人使用XHTML。您需要将内容application/xhtml+xml解释为XHTML,并且在IE的旧版本中将无法使用-这还意味着您犯的任何小错误都会阻止您的页面在支持XHTML的浏览器中显示。因此,Web上看起来像XHTML的大多数东西实际上都是作为HTML提供和解释的。有关更多信息,请参见将XHTML作为text / html认为有害


23
但是,无论如何,拥有有效的xml并不意味着提供 xhtml。它对于各种本地预处理可能很有用。
Michael Krelin-黑客

29
是的,但是您必须非常小心地将HTML转换为XML。它们是不同的语言,并且每种语言中只有一部分是兼容的。例如,在XML中,<br/>与相同<br></br>,但后者不是有效的HTML。
布赖恩·坎贝尔

10
Brian,想法是您可以让HTML格式正确的xml就是这样。当然,当将一个转换为另一个时,您必须确保它仍然有效,但这值得一提吗?:)
Michael Krelin-黑客

5
@Marco我认为document.write与实际(x)html相比并没有那么快(因为必须执行)。在任何情况下,不一定都可以在所有计算机上使用Javascript,因此过度依赖Javascript的网站不是很灵活。另外,html没有功能。
Michael0x2a 2012年

8
@Marco:h,我不知道在xhtml中document.write 不起作用 -感谢分享。我同意Webapp尝试在没有Javascript的情况下执行任何操作是很愚蠢的,但是我试图说,几乎100%依赖Java的网站都比较脆弱,并且在用户禁用javascript(或使用较旧的手机)时可能会失败或其他内容)
Michael0x2a 2012年

227

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

3.2.2.2空隙元素

术语void elements用于表示必须为空的元素。这些要求仅适用于HTML语法。在XHTML中,所有此类元素都被视为普通元素,但必须将其标记为空元素。

禁止这些元素完全包含任何内容。在HTML中,这些元素仅具有开始标记。在自闭的标签语法也可以使用。所述结束标记必须被省略,因为该元素被自动由解析器关闭。

HTML示例:
HTML语法中的void元素。XHTML语法不允许这样做。

<hr>

示例:
使用HTML和XHTML兼容的自动关闭标签语法的void元素。

<hr/>

XHTML示例:
使用仅XHTML语法和显式结束标记的void元素。HTML语法中的void元素不允许这样做。

<hr></hr>

22
因此,答案是最好在没有斜杠和空格的情况下进行编码,但有斜杠(有或没有空格)的代码是可选的吗?
Eikern

67
我喜欢规范不是特别具体的方式(就这一点而言)“嗯,做你想做的!”
马特·艾伦

42
由于它是可选的,因此我更喜欢,/>因为它有利于提高可读性。
BrunoLM

38
我喜欢无缘无故地显式关闭我的标签,除了感觉正确之外,而且在我读/写代码时也很有意义。我很高兴HTML5参考草案同意我的观点。
语法错误

7
似乎对我来说很具体。<br>和<br />都是合法的HTML5。
威廉·丹尼斯

134

XML不允许打开标签,因此它<br>比其他两个标签差一点。其他两个与<br/>用于与旧版浏览器兼容的第二个()大致相同。实际上,/出于兼容性考虑,首选空格之前,但我认为它仅对具有属性的标记有意义。因此,无论您喜欢哪种美学,我都会说<br/><br />

概括起来:这三个都有效,第一个(<br>)少了“便携式”。

编辑:现在,我们都对规格感到疯狂,我认为值得指出的是根据dev.w3.org

开始标签由以下部分组成,并按照以下顺序排列:

  1. 一个“ <”字符。
  2. 元素的标签名称。
  3. (可选)一个或多个属性,每个属性之前必须带有一个或多个空格字符。
  4. (可选)一个或多个空格字符。
  5. 可选地,“ /”字符,仅当元素为void元素时才可以出现。
  6. 一个“>”字符。

17
HTML实际上不是XML,而是非常接近XML。
2009年

6
是的,不是。但这/是一个共同点。HTML5特别允许使用/:“可选地,一个“ /”字符,仅当该元素为void元素时才可以出现”。
Michael Krelin-黑客

4
helloworlder,我想说HTML5规范几乎符合XML。
Michael Krelin-黑客

5
我只想在XML和HTML上都添加ML代表标记语言。它们之间有太多重叠的原因是,它们最初都是使用SGML(标准化的通用标记语言)定义的,但是现在没有多少人记得它...
John Vincent

4
@BennyNeugebauer,如果您使用正则表达式解析html,则或多或少地依赖运气而不是适当关闭标签;-)
Michael Krelin-黑客

104

HTML中(最多HTML 4):使用<br>

HTML 5<br>是优选的,但<br/><br />也是可以接受

XHTML中<br />是首选。也可以使用<br/><br></br>

笔记:

  • <br></br> 在HTML 5中无效,它将被视为两个换行符。
  • XHTML区分大小写,HTML不区分大小写。
  • 为了向后兼容,某些旧的浏览器会将XHTML解析为HTML,<br/>但失败了,但没有<br />

参考:


检查了链接,首选的方法是<br>,但是在哪里说<br/>不可接受?
JackDev 2014年

4
需要说明的是,对于符合XML的语法,<br/>和和<br />(带有SPACE)是相等的,而两者都不偏爱。请参阅XML 1.0规范。之前的空格(空格,制表符或换行)/>是可选的,没有任何首选项。
罗勒·布尔克

1
您能否引用HTML5中首选的非XML语法的参考?这对我来说是个新闻。我记得,对严格XML一致性的可选支持是HTML5的创始目标。也许我错过了whatwg.org 上的HTML vs.XHTML文档,或者W3C Polyglot标记:W3C上HTML5词汇表的强大描述
罗勒·布尔克

1
@BasilBourque重申我在其他地方对您所说的话。阅读HTML5中有关标签和元素的实际规范,您将永远不会找到要求或建议对这些标签使用斜杠的任何建议或建议。如果您想使用XML或XHTML,那么您就不用HTML了,那就不同了。请勿对这些HTML标签使用斜杠。在其他地方,该规范说您可以在其中放置一个,但这并不意味着什么,什么也不做,并且指示浏览器忽略它。因此,它的使用毫无意义也无用。
罗布

@Rob So 第8.1.2.1节。开始标记第8 HTML语法的文档,HTML 5.2 W3C推荐标准,2017年12月14日,由W3C发布不是HTML的实际规格?请指教。
罗勒·布尔克


27

<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>是在较旧的浏览器和工具中可能存在问题。


1
格式正确的HTML不是XHTML。
jmarkmurphy

1
根据定义,XHTML是格式正确的HTML。根据w3schools的说法,XHTML遵循XML的规则,“ XML是一种标记语言,必须正确标记文档(格式正确)”……通过结合HTML和XML的优势,开发了XHTML。 XHTML是重新设计为XML的HTML。” (见w3schools.com/html/html_xhtml.asp
Kmeixner

2
HTML可能格式正确,但不是有效的XML。W3Schools并不总是最权威的参考。
jmarkmurphy

我在1997年参加的大学计算机科学课程的Web编程教授也宣称xhtml是格式良好的html。我不确定您从何处获取信息,可以在网上引用任何官方资源来备份您的主张吗?
Kmeixner,

1
@jmarkmurphy,我认为您可能不熟悉术语“格式正确”,这是一个技术术语,指的是对XML和XHTML标准的要求,即所有标签必须具有闭合标签,并且必须以正确的顺序嵌套。<hr>和<br>不符合XML和XHTML的要求,因为它们没有结束标记,例如:<br />或<br> </br>有效,<br>无效的XHTML或XML 。HTML当然没有格式正确的要求,因此<br>和<hr>仅在HTML中有效。
Kmeixner,

20

XML要求所有标签都具有相应的结束标签。因此,对于没有内部内容的标记,有一种特殊的速记语法。

HTML5不是XML,因此不应提出此类要求。HTML 4.01也不是。

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

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


2
“ HTML5不是XML,因此不应提出这样的要求。” 这是否正确取决于单词“ HTML5”的解释。如果我们说HTML5是一种语言,那么该说法是正确的。但是,如果我们说HTML5是规范,那么该说法是不正确的。HTML5规范定义了“用于HTML和XHTML的词汇表和相关的API”。我知道这有点挑剔,我并不是说这个答案是错误的,只是为读者提供了更多信息。
Christian Hujer '16

14

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

否则<br>很好。


1
有人应该回滚。含义已更改。
乔西亚2015年

9
可比性是什么意思?我不明白
tuxayo

12

二者<br><br />在HTML5是可接受的,但在HTML的精神,<br>应该被使用。HTML5允许使用斜杠,以便与以前的HTML 4.01和XHTML 1.0的文档更加兼容,从而更容易迁移到HTML5。当然,<br/>这也是可以接受的,但是为了与某些较旧的浏览器兼容,请在斜杠(/)前留一个空格。


1
@ Knickerless-Noggins我不确定您在哪里阅读它,但是<br />完全可以接受,并且W3Schools不是HTML的规范。请参阅HTML5规范,该规范明确指出:“然后,如果该元素是void元素之一,或者如果该元素是外来元素,则可能只有一个“ /”(U + 002F)字符。 ]”
kevinji 2014年

与其他答案一样,此答案错误地低估了HTML5中严格的XML一致性的合法性。对XML的支持不是临时的过渡或迁移功能。对XML一致性的可选支持是HTML5的基本目标。对于使用XML工具处理HTML内容的人们来说,这是一项至关重要的功能。
罗勒·布尔克

12
  1. 如果您要在常规网站上输出HTML,则可以使用<br> <br/>,只要您将HTML5作为text / html进行提供,则两者都有效。

  2. 如果您将HTML5作为XHTML提供服务(即内容类型application / xhtml + xml,带有XML声明),则必须使用如下所示的自闭标签:<br/>

    如果不这样做,则某些浏览器可能会拒绝显示页面(特别是Firefox 对于仅显示有效的xhtml + xml页面非常严格)。

    如1.中所述,<br/>它也适用于HTML5,HTML5恰好是XML生成的,但用作常规文本/ html,而没有 XML声明(例如从生成网页的XSL Transform或类似的东西)。

要消除混乱:HTML5中不需要在斜杠前放置空格,并且对页面的呈现方式没有任何影响(如果有人可以举一个例子,我会撤消它,但是我不相信这是是的-但是IE当然对于所有形式的<br>标记都可以做很多其他的奇怪的事情)。

http://validator.w3.org上的出色验证器对于检查有效内容确实很有帮助(尽管我不确定您是否可以依靠它来检查内容类型)。


等等,text / html mimetype是严格的XML吗?
2013年

1
如果使用text / html,则不应将其与XML声明一起使用,但是内容可以是有效的XML(例如,由输出XML的内容生成,例如XSLT输出或序列化为XML的对象)。
伊恩·柯林斯

仍不了解:如果text / html应该有一个<br />,我<br>什么时候应该使用unclosed ?
2013年

1
哦,对不起,如果通过text / html,两者在技术上都对HTML5有效。您可以在validator.w3.org上使用(主要是)出色的验证器进行确认。我上面的措辞很差,我现在看到了,应该对其进行编辑。
伊恩·柯林斯

3
我认为不喜欢Netscape Navigator 3或4的人,<br/>在当今这个时代肯定不必担心。
robertc

12

两者<br><br/>都可以正常工作,但我更喜欢,<br/>因为它更具逻辑性。逻辑上是每当有一个开始标签时就期望有一个结束标签。因此,如果在没有结束标记的情况下不使用开始标记,则代码将更易于阅读。

所有浏览器(除了可能无关紧要的一些非常古老的浏览器)都将显示完全相同的内容。但是,<br>不符合xHTML。


7

<br>并以<br/>不同的方式呈现。一些浏览器解释<br/><br></br>并插入两个换行符


12
什么?您知道哪些浏览器吗?
艾肯(Eikern)2010年

7
在测试ie5 / ns4时代的浏览器时发现了这一点。如果我没记错的话,那就是在标准合规模式下。但这是很久以前的事了
塞缪尔(Samuel)2010年

3
对于严格的HTML4浏览器(实际上只是HTML4验证器),<br />意味着<br>&gt;
Konrad Borowski

7

<br>是足够的,但是在XHTML <br />优选根据WHATWG根据W3C

引用第8.1.2.1HTML 5.2 W3C推荐标准,2017年14月

开始标记必须具有以下格式:

  1. 在属性之后,或在标记名之后(如果没有属性),可能存在一个或多个空格字符。(某些属性必须后面跟一个空格。请参见下面的第8.1.2.3节。)

  2. 然后,如果该元素是void元素之一,或者如果该元素是外来元素,则可能存在单个U + 002F SOLIDUS字符(/)。该字符对void元素没有影响,但对异物则将start标签标记为自动关闭。

如果使用Dreamweaver CS6,它将自动完成为<br />

要在W3C上验证HTML文件,请参见:http : //validator.w3.org/


@Julix确实,为什么要投票?这是此页面上为数不多的正确答案之一。HTML5绝对符合XML(可选),并且在XML语法中,必须使用斜杠将单个标签关闭。在规范中以黑白文字书写时,怎么会如此误解这么简单的事实。
罗勒·布尔克

5

在验证中,这个问题实际上取决于!DOCTYPE您要通过的验证。

我个人最喜欢的4.01 Trans地方是我只使用的地方<br/>,它清除了验证期间可能弹出的警告和错误。

严格是一个更加复杂的野兽,它讨厌"SHORTTAGS"并且实际上只是想要<br></br>

HTML5代码世界的“ LAX”中,确实没有正确的答案,因为它detects every example you put up在那里是正确的……

最后,我认为所有问题is what validation YOU PREFERthe person that you are working for prefers...随着lackadaisical代码严格性的发展,html5我们看到了一些非常懒惰的编码器


4

恕我直言,出于以下原因,最好使用常规符号(<br />)而不是宽恕符号(<br>):

一致性

在您的HTML中,可能有些SVG和SVG仅支持常规表示法(例如<rect />)。

可破解性

ReactNativeScript这样的框架不是使用XML表示法的情况。
您的标记代码将更易于解析。

明晰

即使在深夜,常规符号也更易于阅读和理解。

技术指标

这两个<br><br />有效的HTML标签。

结论

如果您使用成熟的文本编辑器,则将其配置为使用常规表示法(Emmet称为XHTML )。
例如,在Visual Studio Code中,您只需将以下行添加到设置中:

"emmet.syntaxProfiles": {"html": "xhtml"}

1
严格来说,它们都是短标记:分别是HTML短标记和XML短标记。完整的符号是<br></br>,并且在X(HT)ML中有效,但在HTML中无效。
Ilya Streltsyn

1
HTML5没有引入<br>。它始终是HTML。XHTML引入了<br/>
jmarkmurphy

1
要正确了解此历史,您需要深入研究SGML。
迈克尔·凯

3

好吧,我所知道的是,这<br />会用白线<br>中断,在某些情况下只会中断。当我设置IPN脚本(PHP)并发送邮件并检查收件箱时,这发生在我身上。不知道为什么,但我只得到了消息,看起来同时使用<br /> and <br>

在这里查看邮件:http : //snag.gy/cLxUa.jpg

文本的前两部分用分隔<br />,因此,空白行,底部的最后三行文本和最后的部分用分隔,<br>并给出新行。


3
那是什么浏览器?
戴夫·伯顿


2

正如许多人都覆盖,无论是<br><br/>是可以接受的。

我猜想,权衡是<br/>与相比,向终端用户少发送一个字符会带来更好的可读性和向后兼容性<br>

由于Google会使用,<br>因此我也会这样做。

(当然请记住,他们可能正在为我服务,<br>因为我使用的是他们知道支持的Chrome。在IE中,他们可能仍在服务<br/>


2

<br>效果很好。像XHTML这样的更严格的版本要求您添加结束符,而真正的HTML旧版本则不包含DOCTYPEmake <br>non-void标签,例如<br></br>

总结:<br>很好。其他的也很好。


2

HTML5斜线不再是必要的: <br><hr>


斜杠从来没有必要,也从未在任何HTML规范中指定,甚至没有用作规范中的示例。
罗布

1
@Rob我不知道你在哪里得到你的 HTML规范,但我得到我从WHATWG和W3C组织。两者都发布了明确定义严格的XML一致性作为HTML5可选功能的规范。这特别包括使用结束单个标签/>。参见第8.1.2.1和2节。并查看whatwg.org上的HTML vs. XHTML文档,以及W3C Polyglot标记:W3C上HTML5词汇表的完整介绍。
罗勒·布尔克

@BasilBourque请阅读HTML中这些标签的确切规范,并且不要显示不是本文主题的XML或XHTML。在Internet历史上,使用,要求甚至不建议使用斜杠,在HTML的任何规范中都找不到任何书面文字或示例。
罗布

1
@Rob我所能做的就是重复:W3C 在8.1.2.1节中发布了一个名为HTML 5.2的文档。起始标签明确指出,在#6点上,带斜杠或带有斜杠的自闭合标签是有效的:然后,如果该元素是void元素之一,或者如果该元素是外来元素,则可能只有一个U + 002F SOLIDUS字符(/)。该字符对void元素无效,但对异物则将start标签标记为自闭合。我链接的其他文档说明,如果将HTML5表示为XML,则必须使用斜杠。
罗勒·布尔克

1
@BasilBourque我从未说过这是无效的。我说这没有任何意义,也没有任何目的,正如您自己所说。而且,您再次提出将XML作为在HTML中使用它的理由。不要那样做!它们不是同一件事!当HTML解析器需要解释XML内容时,我们称之为“标签汤”。
罗布

2

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

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

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

HTML在这方面非常宽容,并且没有这样的规则。因此,在HTML中,诸如<br> <hr> <meta>etc之类的空节点被编写为没有右斜杠。

的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/" />

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


1

嗯.....有人知道有谁曾经100%遵守W3C规范吗???因此,如果HTML5声称它支持所有三个break元素版本,您可以打赌供应商支持相同甚至更简陋的版本!

在这场辩论中唯一重要的是要始终使用编码,该编码也尽可能地遵循XML规范以及HTML规范。这意味着您应该使用break标签的正确XML版本,并鼓励您的所有团队都这样做:

<br />

相同的斜杠格式应适用于代码中的img,a,hr和meta标签。为什么?因为:

  1. 它与旧的XHTML用户代理/浏览器向后兼容
  2. 浏览器供应商仍然支持XML版本,因此没有HTML5规范。
  3. 现在,过去和将来大多数用户代理的草率实现都将接受它。
  4. 如果您需要从标记创建XHTML / XML文档,它可以使标记与XML标准相媲美。
  5. 对于所有WEB开发人员来说,保持使用遵循XML的可靠标记实践是“良好的编码实践”,包括所有小写字母,带引号的属性,转义的XML字符等的编码。为什么?将来,如果您必须切换到XML数据,则会自动使用XML进行编码和思考。
  6. 我们只能希望,在未来的万维网中,我们摆脱私有供应商实施的标准,回到可靠,可靠,经过验证的标记中,可以更快地解析,通过网络传输数据,并使我们的未来互联网更加标准化使用XML的媒体。

此外,在这里的机器人和机器世界中,机器人不会遇到HTML5为我们解决的相同的人机界面编码问题,他们很乐意返回XML数据系统,并在转换为XML时更快地解析此类UI网页数据。


1

这两个<br><br/>的作品,但也没有必要使用第二个,因为HTML 5还支持第一个语法是那么容易的




-3

<br><br />在某些浏览器中呈现不同的内容,因此选择其他任何一种都不会损害您的项目,但是您确实希望大量查找..replace会影响某些浏览器中的页面呈现,这可能会为您自己甚至增加额外的工作尴尬的是,该更改不会影响您的测试浏览器,但会在客户的首选浏览器中破坏它。

我更喜欢,<br>因为这是自Erwise和Netscape Navigator(早期的Web浏览器)以来我一直使用的方式,但是没有理由不选择<br />。对于某些预处理,可比性等可能有用。

即使您的选择归结为倾向于一种外观,或者您(或您最喜欢的HTML编辑器,例如Dreamweaver)也可能希望您的代码符合xml。由你决定。

快速附注:

不要与混淆br,此外,您还可以考虑wbr在HTML中使用标记:断行机会标记,它指定可以在文本中的何处添加换行符。

如需进一步阅读,请阅读HTML5规范


5
请参阅HTML5规范,该规范明确指出:“然后,如果该元素是void元素之一,或者如果该元素是外来元素,则可能只有一个“ /”(U + 002F)字符。 ]“ <br>当然是一个void元素,如您在引文链接中所见。
kevinji 2014年

-4

没有结束标签的元素称为空标签。在html 4和html 5中,结束标记不是必需的,可以省略。

在xhtml中,标记是如此严格。这意味着必须以开始标签开始,并以结束标签结束。


1
不正确 在HTML5中,单个标签与开始-结束标签对一样有效。请参阅HTML 5.2规范
罗勒·布尔克
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.