我试着检查其他答案,但我仍然感到困惑-特别是在看到超文本标记语言5参考之后。
我认为超文本标记语言4.01应该“允许”单标签只是<img>和<br>。然后XHTML出现了<img />和<br />(有人说那里有旧浏览器的空间)。
<img>
<br>
<img />
<br />
现在我想知道在练习超文本标记语言5时应该如何格式化我的代码。
是<br>、<br/>还是<br />?
<br/>
XML不允许打开标签,所以它使得<br>比另外两个更糟糕。另外两个与第二个(<br/>)大致相当,因为与旧浏览器兼容。实际上,出于兼容性的考虑,/之前的空格是首选的,但我认为这只对有属性的标签有意义。所以我会说<br/>或<br />,随你的审美喜欢。
/
总结一下:所有三个都是有效的,第一个(<br>)不那么“便携”。
编辑:现在我们都对规格很着迷,我认为值得指出的是,根据dev.w3.org:
开始标记包含以下内容按以下顺序排列: 一个“<”字符。元素的标记名称。可选地,一个或多个属性,每个属性都必须是前面有一个或多个空格字符。可选地,一个或多个空格字符。可选地,一个“/”字符,只有在元素是一个空元素。一个“”字符。
开始标记包含以下内容按以下顺序排列:
<br>就足够了。
其他形式是为了与XHTML兼容;使编写与XHTML相同的代码成为可能,并且使其也作为超文本标记语言工作。一些生成超文本标记语言的系统可能基于XML生成器,因此无法仅输出裸<br>标记;如果您使用这样的系统,则可以使用<br/>,但如果您不需要这样做,则没有必要。
然而,很少有人真正使用XHTML。您需要将您的内容作为application/xhtml+xml提供,以便将其解释为XHTML,这在旧版本的IE中不起作用-这也意味着您犯的任何小错误都会阻止您的页面在支持XHTML的浏览器中显示。因此,网络上大多数看起来像XHTML的内容实际上是作为超文本标记语言提供和解释的。有关更多信息,请参阅将XHTML作为text/html提供被认为是有害的。
application/xhtml+xml
根据规格,超文本标记语言5的预期形式是<br>,但允许使用结束斜杠。
我认为超文本标记语言5参考草案的这句话提供了答案:
3.2.2.2虚空元素术语无效元素用于指定必须是空的元素。这些要求仅适用于超文本标记语言语法。在XHTML中,所有此类元素都被视为普通元素,但必须标记为空元素。这些元素禁止包含任何内容。在超文本标记语言中,这些元素只有起始标签。可以使用自闭合标签语法。必须省略结束标签,因为元素由解析器自动关闭。超文本标记语言示例:超文本标记语言语法中的空元素。这在XHTML语法中是不允许的。<hr>示例:使用超文本标记语言和XHTML兼容的自关闭标记语法的空元素。<hr/>XHTML示例:使用纯XHTML语法并带有显式结束标记的空元素。超文本标记语言语法中的空元素不允许这样做。<hr></hr>
3.2.2.2虚空元素
术语无效元素用于指定必须是空的元素。这些要求仅适用于超文本标记语言语法。在XHTML中,所有此类元素都被视为普通元素,但必须标记为空元素。
这些元素禁止包含任何内容。在超文本标记语言中,这些元素只有起始标签。可以使用自闭合标签语法。必须省略结束标签,因为元素由解析器自动关闭。
超文本标记语言示例:超文本标记语言语法中的空元素。这在XHTML语法中是不允许的。
<hr>
示例:使用超文本标记语言和XHTML兼容的自关闭标记语法的空元素。
<hr/>
XHTML示例:使用纯XHTML语法并带有显式结束标记的空元素。超文本标记语言语法中的空元素不允许这样做。
<hr></hr>
换句话说:
<IMG></IMG>
<IMG>
<IMG/>
当超文本标记语言禁止某些结束标记时,xhtml需要它们:
<img></img>
<img/>
在超文本标记语言中具有结束标记的其他<强>禁止强>元素:
<AREA>
<AREA></AREA>
<BASE>
<BASE></BASE>
<BASEFONT>
<BASEFONT></BASEFONT>
<BR>
<BR></BR>
<COL>
<COL></COL>
<FRAME>
<FRAME></FRAME>
<HR>
<HR></HR>
<INPUT>
<INPUT></INPUT>
<ISINDEX>
<ISINDEX></ISINDEX>
<LINK>
<LINK></LINK>
<META>
<META></META>
<PARAM>
<PARAM></PARAM>
超文本标记语言禁止某些结束标记,而xhtml需要是xhtml的问题。如果您正在编写超文本标记语言,您必须遵循超文本标记语言规则。
与此同时,浏览器放弃了执行标准的尝试,因为每个人都弄错了。
</BR>
</P>
</SPAN>
然后xhtml出现了,它的XML规则是每元素必须有一个结束标记,人们只是假设超文本标记语言是一样的。所以标准放弃了,后来被修改以放弃现实。
如果你对可比性感兴趣(不是兼容性,而是可比性),那么我会坚持<br />。
否则,<br>很好。
XML要求所有标签都有一个对应的结束标签。因此,对于没有内部内容的标签,有一种特殊的简写语法。
HTML5不是XML,所以它不应该提出这样的要求。超文本标记语言4.01也不是。
例如,在HTML5规范中,所有带有br标记的示例都使用<br>语法,而不是<br/>。
br
UPD实际上,<br/>是在HTML5中允许。9.1.2.1,7。
<br>和<br/>呈现方式不同。一些浏览器将<br/>解释为<br></br>并插入两个换行符
<br></br>
<br>和<br />在HTML5中都是可以接受的,但本着超文本标记语言的精神,应该使用<br>。HTML5允许关闭斜杠,以便与以前的超文本标记语言4.01和XHTML 1.0的文档更兼容,从而更容易迁移到HTML5。当然,<br/>也可以接受,但要与一些较旧的浏览器兼容,关闭斜杠之前应该有一个空格(/)。
如果您在常规网站上输出超文本标记语言,您可以使用<br>或<br/>,两者在您将HTML5作为text/html提供时均有效。
如果您将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>看起来很整洁的消息
<br /> and <br>
在这里查看邮件:http://snag.gy/cLxUa.jpg
文本的前两段由<br />分隔,因此空格行,底部的最后三行文本和最后一节由<br>分隔,并仅提供新行。
在超文本标记语言(至多超文本标记语言4)中:使用<br>
在超文本标记语言5中:<br>是首选,但<br/>和<br />也是可以接受的
在XHTML中:首选<br />。也可以使用<br/>或<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节
开始标记必须具有以下格式:…在属性之后,如果没有属性,则在标记名称之后,可能有一个或多个空格字符。(某些属性后面需要空格。请参阅下面的§8.1.2.3属性。)然后,如果该元素是无效元素之一,或者该元素是外部元素,则可能有一个U+002F SOLIDUS字符(/)。该字符对无效元素没有影响,但在外部元素上,它将开始标记标记为自关闭。
开始标记必须具有以下格式:
…
在属性之后,如果没有属性,则在标记名称之后,可能有一个或多个空格字符。(某些属性后面需要空格。请参阅下面的§8.1.2.3属性。)
然后,如果该元素是无效元素之一,或者该元素是外部元素,则可能有一个U+002F SOLIDUS字符(/)。该字符对无效元素没有影响,但在外部元素上,它将开始标记标记为自关闭。
如果您使用Dreamweaver CS6,则它将自动完成为<br />。
要在W3C上验证超文本标记语言文件,请参阅:http://validator.w3.org/
<br>和<br />在某些浏览器中呈现不同,因此选择其中一个不会伤害您的项目,但请确保批量查找…替换会影响某些浏览器中的页面呈现,这可能会导致您自己的额外工作,甚至如果更改对您的测试浏览器没有任何影响,会感到尴尬,但在客户端的首选浏览器中打破它。
我更喜欢<br>,因为它是我从Erwise和Netscape Navigator(早期Web浏览器)开始使用的,但没有理由不选择<br />。它可能对一些预处理、可比性等有用。
即使您的选择归结为更喜欢其中一个而不是另一个,或者您(或您最喜欢的超文本标记语言编辑器,例如Dreamweaver)可能希望您的代码符合xml。
一个快速的侧面说明:
不要与br混淆,但除此之外,您还可以考虑在超文本标记语言中使用wbr标记:一个单词中断机会标记,它指定在文本中添加换行符的位置。
wbr
如需进一步阅读,请阅读HTML5规范。
在超文本标记语言的大多数情况下,标签是成对的。但是对于换行符,您不需要一对标签。因此,为了表明这一点,超文本标记语言使用<br/>格式。<br/>是正确的。使用该格式。
<br>标记在超文本标记语言中没有结束标记在XHTML中,<br>标记必须正确关闭,如下所示:<br />
在XML中,每个标签都必须关闭。XHTML是XML的扩展,因此有效的XHTML必须遵循XML的所有规则。因此,即使是像这样的空标签(没有子节点的节点)也应该关闭。XML有一个简短的形式,称为空节点的自关闭标签。您可以写<br></br> as <br />。因此在XHTML中使用<br />。
<br></br> as <br />
超文本标记语言在这方面非常宽松,没有这样的规则。所以在超文本标记语言中,像<br> <hr> <meta>等空节点没有结束的正斜杠。
<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" />这样的标签。
<script src="jQuery.min.js" />
嗯……有没有人知道一个单一的供应商,用户代理,或者浏览器制造商曾经遵循W3C规范100%???所以如果HTML5说它支持所有三个中断元素版本,你可以打赌供应商支持相同的甚至更草率的版本!
在这场辩论中,唯一重要的是尽可能一致地使用遵循XML规范以及超文本标记语言规范的编码。这意味着您应该使用正确的XML版本的中断标记,并鼓励您的所有团队也这样做:
相同的空格斜杠格式应该适用于代码中的img、a、hr和meta标记。为什么?因为:
此外,在这里的机器人和机器世界中,机器人没有HTML5为我们解决的相同的人机界面编码问题,他们很乐意回到XML数据系统,并在转换为XML数据时更快地解析此类UI网页。
没有结束标记的元素称为空标记。在html 4和html 5中,不需要结束标记,可以省略。
在xhtml中,标签非常严格。这意味着必须以开始标签开头,以结束标签结尾。
<br/>是最合适的。这个标记符号也可以在Reactjs中使用,其中需要换行符而不是<br>