题 HTML 5:是,
还是


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

我认为HTML 4.01应该“允许”单个标签 <img> 和 <br>。然后XHTML出现了 <img /> 和 <br /> (有人说旧版浏览器有空间)。

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

<!DOCTYPE HTML>

是吗 <br><br/> 要么 <br />


1689
2017-12-22 13:39


起源


我刚看到这个问题以及关于w3schools和w3fools的评论。就我迄今所看到的情况而言,w3fools报告的所有错误都已在w3schools中得到纠正。所以他们真的在听。 - Luis Alvarado
IMO,w3schools对于初学者来说是一个非常好的教程,因为他们使用简单的单词和例子,不像W3C Spec和MDN那样带有所有花哨的单词和难以获得的想法。 - Derek 朕會功夫
对于任何反对w3schools的人,您对替代品的建议是什么? - chainwork
@chainwork使用 htmldog.com - Jung3o
这是与br(void elements)等元素相关的官方W3 HTML5标准: dev.w3.org/html5/markup/syntax.html#void-element 在>之前的A /(斜杠)是可选的,并且/之前的任何或没有空格数是可选的。这意味着,你可以写什么,或写什么或<br />或<br />等。 - Ignas2526


答案:


只是 <br> 足够了。

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

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


1293
2017-12-22 13:42



“被认为有害”的论文被认为是有害的! - meyerweb.com/eric/comment/chech.html - Michael Krelin - hacker
但拥有有效的xml并不意味着 服务 无论如何,xhtml。它可能对各种本地预处理有用。 - Michael Krelin - hacker
是的,但您必须非常小心地将HTML作为XML处理。它们是不同的语言,每个语言只有一部分是兼容的。例如,在XML中, <br/> 是相同的 <br></br>,但后者不是有效的HTML。 - Brian Campbell
布赖恩,这个想法就是你 能够 你的HTML是格式良好的xml,就是这样。当然,在将一个转换为另一个时,你必须确保它仍然有效,但值得一提吗? :) - Michael Krelin - hacker
@Marco:嗯,我不知道 document.write  不起作用 在xhtml中 - 感谢分享。我同意webapps在没有Javascript的情况下尝试做任何事情都是愚蠢的,但我试图说,几乎100%依赖Javascript的网站都是 更脆弱 当用户禁用javascript(或使用旧手机或其他东西)时可能会失败 - Michael0x2a


我认为这句话来自于 HTML 5参考草案 提供了答案:

但是,有些元素是被禁止的   从包含任何内容。   这些被称为空元素。在   HTML,上面的语法不能使用   对于虚空元素。对于这些元素,   必须省略结束标记,因为   元素自动关闭   解析器。这些要素包括,   其中,br,hr,link和meta

HTML示例:

<link type="text/css" rel="stylesheet" href="style.css">

在XHTML中,XML语法   要求必须这样做   明确使用显式   结束标记,如上所述,或为空   元素语法。这是通过   在末尾插入一个斜杠   在右边之前开始标记   单书名号。

例:

<link type="text/css" href="style.css"/>

作者可以选择使用   对于void元素的相同语法   HTML语法也是如此。一些作者   也选择包括空格   在斜线之前,但事实并非如此   必要。 (在其中使用空格   时尚是一种继承自的惯例   XHTML中的兼容性指南   1.0,附录C.)


195
2017-12-22 13:44



所以,答案是编码最好没有斜线和空格,但是斜杠(有或没有空格) - 是可选的吗? - Eikern
这就是我读它的方式,是的。 - Daan
我喜欢规范不是特别具体的方式(在这一点上)“meh,做你想要的!” - Matt Ellen
由于它是可选的,我更喜欢它 /> 因为它对可读性有好处。 - BrunoLM
我喜欢明确地关闭我的标签,除了感觉正确并且在我读/写代码时有意义。我很高兴HTML5参考草案与我同意。 - Syntax Error


XML不允许让标签保持打开状态 <br> 比其他两个差一点。其他两个大致相当于与旧版浏览器兼容的第二个首选项。实际上,之前的空间 / 出于兼容性考虑是首选,但我认为只有具有属性的标签才有意义。所以我也要说 <br/> 要么 <br />,取悦你的美学。

总结一下:这三个都是有效的,第一个有点“便携”。

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

开始标记包含以下内容   零件,完全按以下顺序:

  1. 一个“<”字符。
  2. 元素的标签名称。
  3. 可选地,一个或多个属性,每个属性必须是   前面有一个或多个空格   字符。
  4. 可选地,一个或多个空格字符。
  5. 可选地,“/”字符,只有在   element是一个void元素。
  6. 一个“>”字符。

119
2017-12-22 13:42



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


HTML(最高为HTML 4): 使用 <br>

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

XHTML<br /> 是优选的。也可以用 <br/> 要么 <br></br>

笔记:

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

参考:


88
2017-12-30 05:40



检查链接,首选方法是<br>,但它在哪里说它是不可接受的? - JackDev
为了澄清,对于符合XML的语法, <br/> 和 <br /> (使用SPACE)是相同的,没有偏好。见 XML 1.0 规范。之前的空格(空格,制表符或LINE FEED) /> 是可选的,没有偏好。 - Basil Bourque
您能否引用HTML5中首选非XML语法的参考?这对我来说是新闻。我记得,对严格的XML一致性的可选支持是HTML5的创始目标。也许我错过了一些东西 HTML与XHTML whatwg.org上的文件,或者 W3C Polyglot标记:HTML5词汇表的强大配置文件 在W3C。 - Basil Bourque
@BasilBourque重复我在别处对你说的话。在HTML5中阅读标签和元素的实际规范,您永远不会找到任何建议或建议要求或建议对这些标记使用结束斜杠。如果您想使用XML或XHTML,那么您不使用HTML,这是一个不同的故事。不要对这些HTML标记使用结束斜杠。在其他地方,规范说你可以放一个,但它没有任何意义,什么都不做,浏览器被指示忽略它。因此,使用它毫无意义和毫无用处是毫无意义和无用的。 - Rob
@Rob所以 第8.1.2.1节。开始标记 的 第8节.HTML语法 该文件, HTML 5.2 W3C建议书,2017年12月14日,由W3C发布的不是HTML的实际规范?请指教。 - Basil Bourque


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


52
2017-12-22 13:44





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

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

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

UPD 其实, <br/> 是 在HTML5中允许。 9.1.2.1,7。


19
2017-12-22 13:48



“HTML5不是XML,所以不应该提出这样的要求。”这是否正确取决于“HTML5”一词的解释。如果我们将HTML5称为语言,那么该陈述是正确的。但是,如果我们将HTML5视为规范,则该语句不正确。 HTML5规范定义了“HTML和XHTML的词汇表和相关API”。我知道这有点挑剔,我不是说这个答案是错的,只是为读者提供了额外的信息。 - Christian Hujer


我建议使用<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 />存在问题的情况,但是,在许多情况下,旧版浏览器和工具中可能存在问题或特别是问题。


13
2018-01-16 17:43



格式良好的HTML不是XHTML。 - jmarkmurphy
根据定义,XHTML是格式良好的HTML。根据w3schools的说法,XHTML遵循XML规则“XML是一种标记语言,文档必须正确标记(”格式良好“)......通过结合HTML和XML的优势,开发了XHTML。 XHTML是HTML重新设计为XML。“ (看到 w3schools.com/html/html_xhtml.asp) - Kmeixner
HTML可以很好地形成,但不是有效的XML。 W3Schools并不总是最权威的参考。 - jmarkmurphy
1997年我接受的关于网络编程的大学计算机科学课程的教授也声称xhtml是格式良好的html。我不确定您从何处获取您的信息,您是否可以引用任何在线官方来源备份您的声明? - Kmeixner
<br>和<hr>是完全有效且格式良好的HTML。它们不是有效的XML标记。 HTML语法下的HTML规范说空元素(如<br>或<hr>)可能有一个 / 紧接在决赛前的角色 >。但它没有效果。如果它存在则被忽略。如果 / 标准会说,这是语法的首选部分 should 而不是 may。 - jmarkmurphy


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


11
2018-04-21 18:50



@ Knickerless-Noggins我不确定你在哪里阅读,但是 <br /> 是完全可以接受的,W3Schools不是HTML的规范。看到 HTML5规范, 哪一个 明确地 说“然后,如果元素是其中之一 虚空元素,或者如果元素是 异物,那么可能有一个 单个“/”(U + 002F)字符。 [重点补充]“ - mc10
与其他人一样,这个答案错误地淡化了HTML5中严格的XML一致性的合法性。支持XML是 不 临时转换或迁移功能。 XML一致性的可选支持是HTML5的基本目标。对于使用XML工具来处理HTML内容的人来说,这是一个至关重要的功能。 - Basil Bourque


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

除此以外, <br> 很好。


11
2017-12-22 13:45



@mindstalker写了compARAbility,而不是comPATible。 - nycynik
有人应该回来。意思改变了。 - Josiah
可比性是什么意思?我不明白。 - tuxayo


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

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

    如果你不这样做,一些浏览器可能会拒绝渲染你的页面(特别是Firefox 非常 严格只渲染有效的xhtml + xml页面)。

    如1所述。 <br/> 也适用于碰巧以XML格式生成但作为常规文本/ html使用的HTML5  XML声明(例如来自生成网页的XSL转换或类似的东西)。

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

优秀的验证员 http://validator.w3.org 确实有用(虽然我不确定你是否可以依赖它来检查内容类型)。


9
2018-01-28 16:44



等,text / html mimetype是严格的XML吗? - amwinter
如果使用text / html,则不应使用XML声明来提供它,但内容可以是其他有效的XML(例如,从输出XML的内容生成,如XSLT输出或序列化为XML的对象)。 - Iain Collins
还是不明白:如果text / html应该有 <br />,什么时候应该使用未关闭的 <br>? - amwinter
哦对不起,如果是通过text / html,两者在技术上对HTML5都有效。您可以通过(大多数)真棒验证器确认这一点 validator.w3.org。我上面的措辞很差,我现在看到,应该编辑它。 - Iain Collins
我认为这是Netscape Navigator 3或4不喜欢的 <br/>当然,在这个时代,没有什么可担心的。 - robertc


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

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


9
2018-02-28 01:18