超文本标记语言5:是<br>、<br/>还是<br/>?

我试着检查其他答案,但我仍然感到困惑-特别是在看到超文本标记语言5参考之后。

我认为超文本标记语言4.01应该“允许”单标签只是<img><br>。然后XHTML出现了<img /><br />有人说那里有旧浏览器的空间)。

现在我想知道在练习超文本标记语言5时应该如何格式化我的代码。

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

1588204 次浏览

XML不允许打开标签,所以它使得<br>比另外两个更糟糕。另外两个与第二个(<br/>)大致相当,因为与旧浏览器兼容。实际上,出于兼容性的考虑,/之前的空格是首选的,但我认为这只对有属性的标签有意义。所以我会说<br/><br />,随你的审美喜欢。

总结一下:所有三个都是有效的,第一个(<br>)不那么“便携”。

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

开始标记包含以下内容按以下顺序排列:

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

<br>就足够了。

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

然而,很少有人真正使用XHTML。您需要将您的内容作为application/xhtml+xml提供,以便将其解释为XHTML,这在旧版本的IE中不起作用-这也意味着您犯的任何小错误都会阻止您的页面在支持XHTML的浏览器中显示。因此,网络上大多数看起来像XHTML的内容实际上是作为超文本标记语言提供和解释的。有关更多信息,请参阅将XHTML作为text/html提供被认为是有害的

根据规格,超文本标记语言5的预期形式是<br>,但允许使用结束斜杠。

我认为超文本标记语言5参考草案的这句话提供了答案:

3.2.2.2虚空元素

术语无效元素用于指定必须是的元素。这些要求仅适用于超文本标记语言语法。在XHTML中,所有此类元素都被视为普通元素,但必须标记为空元素。

这些元素禁止包含任何内容。在超文本标记语言中,这些元素只有起始标签。可以使用自闭合标签语法。必须省略结束标签,因为元素由解析器自动关闭。

超文本标记语言示例:
超文本标记语言语法中的空元素。这在XHTML语法中是不允许的。

<hr>

示例:
使用超文本标记语言和XHTML兼容的自关闭标记语法的空元素。

<hr/>

XHTML示例:
使用纯XHTML语法并带有显式结束标记的空元素。超文本标记语言语法中的空元素不允许这样做。

<hr></hr>

换句话说:

  • 无效的超文本标记语言5<IMG></IMG>
  • 有效的超文本标记语言5<IMG><IMG/>

当超文本标记语言禁止某些结束标记时,xhtml需要它们:

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

在超文本标记语言中具有结束标记的其他<强>禁止元素:

元素有效的超文本标记语言有效的xhtml
地区<AREA><AREA></AREA>
BASE<BASE><BASE></BASE>
BASE FONT<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>
ISINDEX<ISINDEX><ISINDEX></ISINDEX>
LINK<LINK><LINK></LINK>
META<META><META></META>
PARAM<PARAM><PARAM></PARAM>

超文本标记语言禁止某些结束标记,而xhtml需要是xhtml的问题。如果您正在编写超文本标记语言,您必须遵循超文本标记语言规则。

与此同时,浏览器放弃了执行标准的尝试,因为每个人都弄错了。

  • </BR>就是禁止
  • </P>就是可选
  • </SPAN>就是选填/必填

然后xhtml出现了,它的XML规则是元素必须有一个结束标记,人们只是假设超文本标记语言是一样的。所以标准放弃了,后来被修改以放弃现实。

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

否则,<br>很好。

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

HTML5不是XML,所以它不应该提出这样的要求。超文本标记语言4.01也不是。

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

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

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

<br><br />在HTML5中都是可以接受的,但本着超文本标记语言的精神,应该使用<br>。HTML5允许关闭斜杠,以便与以前的超文本标记语言4.01和XHTML 1.0的文档更兼容,从而更容易迁移到HTML5。当然,<br/>也可以接受,但要与一些较旧的浏览器兼容,关闭斜杠之前应该有一个空格(/)。

  1. 如果您在常规网站上输出超文本标记语言,您可以使用<br><br/>,两者在您将HTML5作为text/html提供时均有效。

  2. 如果您将HTML5作为XHTML提供(即内容类型apps/xhtml+xml,带有XML声明),那么您必须使用像这样的自关闭标记:<br/>

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

    <br/>也适用于碰巧作为XML生成但作为常规text/html没有 XML声明(例如来自生成网页的XSL转换或类似的东西)的HTML5。

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

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

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

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

文本的前两段由<br />分隔,因此空格行,底部的最后三行文本和最后一节由<br>分隔,并仅提供新行。

超文本标记语言(至多超文本标记语言4)中:使用<br>

超文本标记语言5中:<br>是首选,但<br/><br />也是可以接受的

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

备注:

  • <br></br>在超文本标记语言5中无效,它将被认为是两个换行符。
  • XHTML区分大小写,超文本标记语言不区分大小写。
  • 为了向后兼容,一些旧的浏览器将XHTML解析为超文本标记语言,并在<br/>上失败,而不是<br />

参考:

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

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

2)<br />向后兼容XHTML,格式良好的超文本标记语言(即:XHTML)通常更容易验证错误和调试

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

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

<br>就足够了,但在XHTML中<br />是首选根据WHATWG根据W3C

引用超文本标记语言5.2 W3C建议,2017年12月14日中的第8.1.2.1节

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

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

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

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

要在W3C上验证超文本标记语言文件,请参阅:http://validator.w3.org/

<br><br />在某些浏览器中呈现不同,因此选择其中一个不会伤害您的项目,但请确保批量查找…替换会影响某些浏览器中的页面呈现,这可能会导致您自己的额外工作,甚至如果更改对您的测试浏览器没有任何影响,会感到尴尬,但在客户端的首选浏览器中打破它。

我更喜欢<br>,因为它是我从Erwise和Netscape Navigator(早期Web浏览器)开始使用的,但没有理由不选择<br />。它可能对一些预处理、可比性等有用。

即使您的选择归结为更喜欢其中一个而不是另一个,或者您(或您最喜欢的超文本标记语言编辑器,例如Dreamweaver)可能希望您的代码符合xml。

一个快速的侧面说明:

不要与br混淆,但除此之外,您还可以考虑在超文本标记语言中使用wbr标记:一个单词中断机会标记,它指定在文本中添加换行符的位置。

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

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

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

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

超文本标记语言在这方面非常宽松,没有这样的规则。所以在超文本标记语言中,像<br> <hr> <meta>等空节点没有结束的正斜杠。

超文本标记语言

<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" />这样的标签。

嗯……有没有人知道一个单一的供应商,用户代理,或者浏览器制造商曾经遵循W3C规范100%???所以如果HTML5说它支持所有三个中断元素版本,你可以打赌供应商支持相同的甚至更草率的版本!

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

<br />

相同的空格斜杠格式应该适用于代码中的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网页。

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

在xhtml中,标签非常严格。这意味着必须以开始标签开头,以结束标签结尾。

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