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

Eik*_*ern 1952 html

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

我认为HTML 4.01应该"允许"单个标签只是<img><br>.然后XHTML来一起<img /><br />(如果有人说,空间是有旧的浏览器).

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

__PRE__

是吗<br>,<br/>还是<br />

Bri*_*ell 1479

简单<br>就足够了.

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

然而,很少有人真正使用XHTML.您需要提供内容,application/xhtml+xml因为它被解释为XHTML,并且在旧版本的IE中不起作用 - 这也意味着您所做的任何小错误都会阻止您的页面显示在支持XHTML的浏览器中.因此,大多数在Web上看起来像XHTML的内容实际上都是作为HTML提供和解释的.有关更多信息,请参阅将XHTML作为text/html服务.

  • 是的,但您必须非常小心地将HTML作为XML处理.它们是不同的语言,每个语言只有一部分是兼容的.例如,在XML中,`<br/>`与``</ br>`相同,但后者不是有效的HTML. (25认同)
  • 但是,拥有有效的xml并不意味着*serve*xhtml,无论如何.它可能对各种本地预处理有用. (20认同)
  • Brian,我的想法是你可以*让你的html是格式良好的xml,就是这样.当然,当将一个转换为另一个时,你必须确保它仍然有效,但值得一提吗?:) (9认同)
  • @Marco:嗯,我不知道xhtml中的`document.write` [不起作用](https://developer.mozilla.org/en/Writing_JavaScript_for_XHTML) - 感谢分享.我同意webapps在没有Javascript的情况下尝试做任何事情都是愚蠢的,但我试图说,几乎100%依赖Javascript的网站[更脆弱](http://isolani.co.uk/ blog/javascript/BreakingTheWebWithHashBangs)并且当用户禁用javascript(或使用旧手机或其他东西)时可能会失败 (7认同)
  • @Marco我认为document.write与实际(x)html相比非常快(因为它必须被执行).在任何情况下,Javascript都不一定适用于所有计算机,因此过度依赖它们的网站不是很灵活.另外,html没有功能. (4认同)
  • XHTML仍然可用于创建"干净"的HTML(正确嵌套的元素,区分大小写,更严格的语法等).关于它"有害"的抱怨大大夸大了IMO,并且,与"被认为有害"的推荐相反,我会在任何一天使用XHTML而不是未完成的HTML5规范(好吧,直到HTML 5规范最终确定并支持无论如何). (3认同)
  • 看到这篇[自闭标签文章](https://www.tutorialstonight.com/self-closure-tags-in-html.php) 并自己在控制台中检查代码后,我才知道在 HTML5 中,即使你写`&lt;br/&gt;` 或 `&lt;br /&gt;` 它们最终会被浏览器转换为 `&lt;br&gt;`。 (3认同)
  • @Deflect:我没有说`document.write`比我不知道的XHTML更快,并且从未想过要比较它们的性能.我只想继续使用`document.write`和简单的```而且从我对XHMTL的理解中我不能.除了使用`document.write`的网站不能被称为过度依赖JS的网站这一事实,如今在使用JS的webapp上思考就像想要使用没有引擎的汽车一样. (2认同)

Daa*_*aan 217

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

但是,有些元素根本不包含任何内容.这些被称为空元素.在HTML中,上述语法不能用于void元素.对于此类元素,必须省略结束标记,因为解析器会自动关闭该元素.这些元素包括br,hr,link和meta等

HTML示例:

<hr>
Run Code Online (Sandbox Code Playgroud)

在XHTML中,XML语法要求规定必须使用显式结束标记(如上所述)或空元素语法使其显式化.这是通过在直角括号之前的开始标记的末尾插入斜杠来实现的.

例:

<hr/>
Run Code Online (Sandbox Code Playgroud)

作者可以选择在HTML语法中对void元素使用相同的语法.一些作者还选择在斜线之前包含空格,但这不是必需的.(以这种方式使用空格是继承自XHTML 1.0,附录C中的兼容性指南的约定.)

  • 我喜欢规范不是特别具体的方式(在这一点上)"meh,做你想要的!" (65认同)
  • 由于它是可选的,我更喜欢`/>`因为它有利于可读性. (42认同)
  • 我喜欢明确地关闭我的标签,除了感觉正确并且在我读/写代码时有意义.我很高兴HTML5参考草案与我同意. (34认同)
  • 所以,答案是编码最好没有斜线和空格,但斜杠(有或没有空格) - 是可选的吗? (22认同)
  • 似乎对我来说非常具体.<br>和<br />都是合法的HTML5. (6认同)
  • 真的没有那么复杂:在XML中,**分隔单个标签的斜杠字符是正确的语法。如果要将HTML视为XML,例如在使用XML工具时,请使用斜杠。如果您不关心XML的严格性,则斜杠是可选的。 (2认同)

Mic*_*ker 133

XML不允许打开标签,因此它<br>比其他两个标签更糟糕.其他两个大致相当于第二个(<br/>),因为它与旧版浏览器兼容.实际上,/出于兼容性考虑,之前的空格是首选,但我认为只有具有属性的标签才有意义.所以我要么说<br/>或者<br />,无论哪个都取悦你的美学.

总结一下:这三个都是有效的,第一个(<br>)有点"便携".

编辑:既然我们对规格都很疯狂,我认为根据dev.w3.org的说法值得指出:

开始标记由以下部分组成,完全按以下顺序排列:

  1. 一个"<"字符.
  2. 元素的标签名称.
  3. 可选地,一个或多个属性,每个属性必须在一个或多个空格字符之后.
  4. 可选地,一个或多个空格字符.
  5. 可选地,"/"字符,仅当元素是void元素时才存在.
  6. 一个">"字符.

  • HTML实际上不是XML,只是非常接近它. (17认同)
  • 是的,事实并非如此.但是`/`是这里的共同点.HTML5特别允许使用`/`:"可选,一个"/"字符,只有当元素是一个void元素时才可以存在". (6认同)
  • 我只想在XML和HTML上都添加ML代表标记语言。它们之间有太多重叠的原因是,它们最初都是使用SGML(标准化的通用标记语言)定义的,但是现在没有多少人记得它... (5认同)
  • helloworlder,我会说HTML5规范接近于符合XML的规范. (4认同)
  • @BennyNeugebauer,如果你正在使用正则表达式解析html,你或多或少会依靠你的运气而不是正确关闭标签;-) (4认同)

Jac*_*Dev 103

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

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

XHTML中:<br />是首选.也可以用<br/><br></br>

笔记:

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

参考:

  • 为了澄清,对于符合XML的语法,`<br/>`和`<br />`(带有SPACE)是相同的,没有偏好.请参阅[XML 1.0](http://www.w3.org/TR/REC-xml/#sec-starttags)规范.`/>`之前的空格(空格,制表符或LINE FEED)是可选的,没有偏好. (4认同)
  • 您能否引用 HTML5 中首选的非 XML 语法的参考?这对我来说是新闻。我记得,对严格 XML 一致性的可选支持是 HTML5 的创始目标。也许我错过了 Whatwg.org 上的 [*HTML 与 XHTML*](https://wiki.whatwg.org/wiki/HTML_vs._XHTML) 文档或 [*W3C 多语言标记:强大的简介HTML5 词汇*](https://dev.w3.org/html5/html-polyglot/html-polyglot.html),位于 W3C。 (2认同)

tva*_*son 55

根据规范,预期形式适用<br>于HTML 5,但允许使用结束斜杠.


sas*_*nin 20

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

HTML5不是XML,所以它不应该提出这样的要求.HTML 4.01也不是.

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

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

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

Kme*_*ner 20

我建议使用<br />,原因如下:

1)突出显示不同颜色的XML语法的文本和XML编辑器将使用<br />正确突出显示,但如果您使用<br>,情况并非总是如此

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

3)一些旧的解析器和一些编码规范需要在结束斜杠之前的空格(即:<br />而不是<br/>),如WordPress插件编码规范:http://make.wordpress.org/core/手册/编码标准的/ HTML /

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

  • 根据定义,XHTML 是格式良好的 HTML。XHTML 遵循 XML 的规则,根据 w3schools “XML 是一种标记语言,其中文档必须正确标记(“格式良好”)...... 通过结合 HTML 和 XML 的优势,开发了 XHTML。 XHTML 是重新设计为 XML 的 HTML。” (见 https://www.w3schools.com/html/html_xhtml.asp) (4认同)
  • @jmarkmurphy,我认为您可能不熟悉术语“格式良好”,它是一个技术术语,指的是 XML 和 XHTML 标准的要求,即所有标签都必须具有结束标签并且必须以正确的顺序嵌套. &lt;hr&gt; 和 &lt;br&gt; 不符合 XML 和 XHTML 的要求,因为它们没有结束标记,例如:&lt;br /&gt; 或 &lt;br&gt;&lt;/br&gt; 是有效的,&lt;br&gt; 是无效的 XHTML 或 XML . 当然,HTML 没有格式良好的要求,所以 &lt;br&gt; 和 &lt;hr&gt; 仅在 HTML 中有效。 (4认同)
  • 格式良好的 HTML 不是 XHTML。 (3认同)
  • HTML 可以格式良好,但不是有效的 XML。W3Schools 并不总是最权威的参考。 (2认同)
  • &lt;br&gt; 和 &lt;hr&gt; 是完全有效且格式良好的 HTML。它们不是有效的 XML 标记。HTML 语法下的 HTML 规范规定,void 元素(如 &lt;br&gt; 或 &lt;hr&gt;)可以在最后的“&gt;”之前有一个“/”字符。但没有效果。如果存在则被忽略。如果“/”是语法的首选部分,则标准会说“应该”而不是“可以”。 (2认同)

Min*_*ker 14

如果你对可比性(不兼容性,但可比性)感兴趣,那么我会坚持下去<br />.

否则,<br>很好.

  • @mindstalker写了compARAbility,而不是comPATible. (11认同)
  • 可比性是什么意思?我不明白. (7认同)

kev*_*nji 12

两个<br><br />是可接受的,HTML5,但在HTML的精神,<br>应该被使用.HTML5允许关闭斜杠,以便与以前HTML 4.01和XHTML 1.0的文档更兼容,从而可以更轻松地迁移到HTML5.当然,<br/>也可以接受,但为了与一些旧的浏览器兼容,在结束斜杠(/)之前应该有一个空格.

  • @Knickerless-Noggins 我不确定你在哪里读到的,但是 `&lt;br /&gt;` 是完全可以接受的,而且 W3Schools 不是 HTML 的规范。请参阅 [HTML5 规范](http://www.w3.org/TR/html5/syntax.html#start-tags),其中*明确*指出“那么,如果该元素是 **[void elements](http://www.w3.org/TR/html5/syntax.html#void-elements)**,或者如果该元素是[外部元素](http://www.w3.org/TR /html5/syntax.html#foreign-elements),那么可能有一个**单个“/”(U+002F)字符**。[强调]” (2认同)

Iai*_*ins 12

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

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

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

    如1. <br/>中所述,也适用于HTML5,它恰好是作为XML生成的,但是在没有 XML声明的情况下用作常规text/html (例如来自生成网页的XSL转换,或类似的东西).

为了消除混淆:在HTML5中不需要在斜杠之前放置一个空格,并且对页面的呈现方式没有任何影响(如果有人能引用一个例子我会收回它,但我不相信它是的 - 但IE肯定会做很多其他奇怪的事情与所有形式的<br>标签).

http://validator.w3.org上的优秀验证器非常有助于检查什么是有效的(尽管我不确定你是否可以依赖它来检查内容类型).

  • 我认为Netscape Navigator 3或4不喜欢```,当然没有什么可担心的. (3认同)

Dan*_*ray 11

双方<br><br/>会做得很好,但我更喜欢<br/>,因为它是稍微更符合逻辑.只要有开始标记,期望结束标记是合乎逻辑的.因此,如果在没有结束标记的情况下不使用开始标记,则代码会更容易阅读.

所有浏览器(可能是一些非常旧的浏览器除外)都将显示两者完全相同.但是,<br>不是xHTML complient.


Sam*_*uel 7

<br><br/>渲染方式不同.一些浏览器解释<br/><br></br>并插入两个换行符

  • 什么?你知道哪些浏览器? (12认同)
  • 在测试ie5/ns4时代的浏览器时发现了这个.如果我没记错的话就是在标准合规模式下.但是很久以前...... (7认同)
  • 对于严格的HTML4浏览器(实际上只是HTML4验证器),`<br />`表示`<br>&gt;`. (3认同)

kru*_*pal 7

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

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

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

...

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

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

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

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

  • @BasilBourque,我认为这主要是因为答案的第一句话过于简短/误导:“&lt;br&gt; 就足够了,但在 XHTML &lt;br /&gt; 中是首选......”=&gt; 人们可以推断`&lt;br &gt;` 可能用在 XHTML 中,这不是事实。 (2认同)

Sto*_*ely 6

嗯......有谁知道曾经 100% 遵循 W3C 规范的单一供应商、用户代理或浏览器制造商吗???因此,如果 HTML5 表示它支持所有三个中断元素版本,那么您可以打赌供应商支持相同甚至更糟糕的版本!

在这场争论中唯一重要的是尽可能一致地使用同时遵循 XML 规范和 HTML 规范的编码。这意味着您应该使用正确的 XML 版本的中断标记,并鼓励您的所有团队也这样做:

<br />
Run Code Online (Sandbox Code Playgroud)

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

  1. 它向后兼容较旧的 XHTML 用户代理/浏览器
  2. 无论如何,浏览器供应商都支持 XML 版本,因此 HTML5 规范毫无意义。
  3. 今天、过去和未来大多数用户代理的草率实现都会接受它。
  4. 如果您需要返回从标记创建 XHTML/XML 文档,它允许您的标记与 XML 标准进行比较。
  5. 对于所有 Web 开发人员来说,继续使用遵循 XML 的可靠标记实践是“良好的编码实践”,包括全部小写编码、引用属性、转义 XML 字符等。为什么?将来,如果您必须切换到 XML 数据,您会自动使用 XML 进行编码和思考。
  6. 我们只能希望,在未来的万维网中,我们摆脱私人供应商实施的标准,回到可靠、可靠、经过验证的标记,这种标记可以更快地解析、更快地通过线路传输数据,并使我们未来的互联网更加标准化。使用 XML 的媒体。
  7. 旧的 Netscape 在斜杠之前总是需要“/”空格,否则会失败。谁关心旧浏览器,对吧?但这是我的版本的又一个案例,我仍然喜欢:)

此外,在机器人和机器世界中,机器人不存在 HTML5 为我们解决的人机界面编码问题,它们会很高兴回到 XML 数据系统,并在转换为 XML 时更快地解析此类 UI 网页数据。


小智 6

<br/>是最合适的。这个标记符号也可以用在 Reactjs 中,其中需要换行符而不是<br>


小智 5

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

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

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

  • 那是什么浏览器? (3认同)

Bha*_*nki 5

在 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/">
Run Code Online (Sandbox Code Playgroud)

XHTML

<br />
<hr />
<meta name="keywords" content="" />
<link rel="canonical" href="http://www.google.com/" />
Run Code Online (Sandbox Code Playgroud)

并非所有标签都可以自闭合。例如,<script src="jQuery.min.js" />XHTML DTD 不允许像这样的标签。


小智 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我们看到了一些非常懒惰的编码器