我尝试过检查其他答案,但我仍然感到困惑——尤其是在看到W3schools HTML5参考之后。
我认为HTML4.01应该“允许”单个标记仅为<img>和<br>。然后XHTML与<img/>和<br/>一起出现(有人说旧版浏览器的空间很大)。
现在我想知道在练习HTML5时应该如何格式化代码。
是<br>、<br/>还是<br/>?
我尝试过检查其他答案,但我仍然感到困惑——尤其是在看到W3schools HTML5参考之后。
我认为HTML4.01应该“允许”单个标记仅为<img>和<br>。然后XHTML与<img/>和<br/>一起出现(有人说旧版浏览器的空间很大)。
现在我想知道在练习HTML5时应该如何格式化代码。
是<br>、<br/>还是<br/>?
XML不允许打开标记,因此它比其他两个标记更糟糕。另外两个与第二个(<br/>)大致相当,以兼容较旧的浏览器。实际上,出于兼容性的考虑,/之前的空格是首选的,但我认为这只适用于具有属性的标记。所以我会说<br/>或<br/>,无论你的审美如何。
综上所述:这三个都是有效的,第一个(<br>)不那么“便携”。
编辑:现在我们都对规格着迷,我认为值得指出的是,根据dev.w3.org:
开始标记包括以下内容零件,完全按照以下顺序:“<”字符。元素的标记名。(可选)一个或多个属性,每个属性必须前面有一个或多个空格字符。(可选)一个或多个空格字符。(可选)“/”字符,仅当元素是空元素。“>”字符。
简单<br>就足够了。
其他形式是为了与XHTML兼容;以使编写与XHTML相同的代码成为可能,并使其作为HTML工作。一些生成HTML的系统可能基于XML生成器,因此无法仅输出一个简单的<br>标记;如果您正在使用这样的系统,可以使用<br/>,如果您不需要这样做,则不必使用。
然而,很少有人真正使用XHTML。您需要将内容作为application/xhtml+xml提供,以便将其解释为xhtml,而这在旧版本的IE中不起作用-这也意味着您犯的任何小错误都将阻止页面在支持xhtml的浏览器中显示。因此,web上看起来像XHTML的大部分内容实际上都是作为HTML提供和解释的。有关更多信息,请参阅将XHTML作为text/html提供。
我认为HTML 5参考草案中的这句话提供了答案:
3.2.2.2空隙元件术语void元素用于指定必须为空的元素。这些要求仅适用于HTML语法。在XHTML中,所有这些元素都被视为普通元素,但必须标记为空元素。这些元素完全禁止包含任何内容。在HTML中,这些元素只有开始标记。可以使用自动关闭标记语法。必须省略结束标记,因为元素由解析器自动关闭。HTML示例:HTML语法中的void元素。XHTML语法中不允许这样做。<小时>例子:使用HTML和XHTML兼容的自动关闭标记语法的void元素。<hr/>XHTML示例:使用带有显式结束标记的仅XHTML语法的void元素。这对于HTML语法中的void元素是不允许的。<hr></hr>
换句话说:
无效的HTML 5:<IMG></IMG>有效的HTML 5:<IMG>,<IMG/>
虽然HTML禁止某些结束标记,但xhtml要求它们:
xhtml:<img>无效有效的xhtml:<img></img>或<img/>
HTML中禁止使用结束标记的其他元素:
Element | Valid HTML | Valid xhtml |
---|---|---|
AREA | <AREA> |
<AREA></AREA> |
BASE | <BASE> |
<BASE></BASE> |
BASEFONT | <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></INPUT> |
ISINDEX | <ISINDEX> |
<ISINDEX></ISINDEX> |
LINK | <LINK> |
<LINK></LINK> |
META | <META> |
<META></META> |
PARAM | <PARAM> |
<PARAM></PARAM> |
HTML禁止某些结束标记,而xhtml需要这些标记,这是xhtml的问题。如果您正在编写HTML,请遵循HTML规则。
与此同时,布罗沃斯放弃了执行这些标准,因为每个人都错了。这并不明显:
禁止</BR></P>是可选的需要</SPAN>
然后xhtml出现了,它的XML规则是每个元素都必须有一个结束标记,人们只是认为HTML是一样的。因此,这些标准放弃了,后来进行了修改,向现实伸出了双手。
XML要求所有标记都具有相应的结束标记。因此,对于没有内部内容的标记,有一种特殊的简短语法。
HTML5不是XML,因此不应该提出这样的要求。HTML 4.01也不是。
例如,在HTML5规范中,所有带有br标记的示例都使用<br>语法,而不是<br/>。
UPD实际上,<br/>在HTML5中是允许的。9.1.2.1, 7.
<br>和<br/>在HTML5中都是可以接受的,但本着HTML的精神,应该使用<br>。HTML5允许关闭斜杠,以便与以前的HTML 4.01和XHTML 1.0文档更兼容,从而更容易迁移到HTML5。当然,<br/>也是可以接受的,但为了与一些旧浏览器兼容,右斜杠(/)前应该有一个空格。
如果您在常规网站上输出HTML,则可以使用<br>或<br/>,这两种方法在您以text/HTML形式提供HTML5时都有效。如果您将HTML5作为XHTML提供(即内容类型application/XHTML+xml,带有xml声明),则必须使用一个自关闭标记,如:<br/>。如果你不这样做,一些浏览器可能会断然拒绝呈现你的页面(特别是Firefox对于只呈现有效的xhtml+xml页面非常严格)。如1所述<br/>对于HTML5也是有效的,HTML5恰好生成为XML,但作为没有XML声明的常规文本/html(例如从生成网页的XSL转换或类似的内容)。
为了消除混淆:在HTML5中不需要在斜杠前加空格,这对页面的呈现方式没有任何影响(如果有人能举出一个例子,我会收回这一点,但我不相信这是真的-但IE确实对所有形式的<br>标记做了很多其他奇怪的事情)。
优秀的验证器http://validator.w3.org对于检查有效内容非常有用(尽管我不确定您是否可以依靠它来检查内容类型)。
我只知道<br/>用白线表示休息,而<br>在某些情况下只是表示休息。当我设置IPN脚本(PHP)并发送邮件并查看收件箱时,我遇到了这种情况。不知道为什么,但我只使用<br/>和<br>两种语言,让邮件看起来很整洁
看看这里的邮件:http://snag.gy/cLxUa.jpg
文本的前两部分由<br/>分隔,因此空白行、底部的最后三行文本和最后一部分由<br>分隔,并仅提供新行。
在HTML(最多HTML 4)中:使用<br>
在HTML 5中:<br>是首选,但<br/>和<br/>也是可以接受的
在XHTML中:<br/>是首选。也可以使用<br/>或<br></br>
笔记:
<br></br>在HTML 5中无效,它将被视为两个换行符。XHTML区分大小写,HTML不区分大小写。为了向后兼容,一些旧浏览器会将XHTML解析为HTML,并在<br/>时失败,但不会<br/>
参考:
http://www.w3schools.com/tags/tag_br.asphttp://en.wikipedia.org/wiki/XHTML
出于以下原因,我建议使用<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/>在旧浏览器和工具中可能有问题。
<br>是足够的,但根据WHATWG和W3C,XHTML<br/>是首选。
引用HTML 5.2 W3C建议第8.1.2.1节,2017年12月14日
开始标记必须具有以下格式:…在属性之后,或者如果没有属性,则在标记名称之后,可以有一个或多个空格字符。(某些属性后面需要加空格。请参见下面的§8.1.2.3属性。)然后,如果该元素是void元素之一,或者该元素是外来元素,则可能只有一个U+002F SOLIDUS字符(/)。此字符对void元素没有影响,但对外来元素,它将开始标记标记为自动关闭。
如果使用Dreamweaver CS6,则它将自动完成为<br/>。
要在W3C上验证HTML文件,请参阅:http://validator.w3.org/
<br>并且<br/>在某些浏览器中呈现方式不同,因此选择其中一种不会损害您的项目,但确实需要大量查找。。替换以影响某些浏览器中的页面呈现,这可能会给您自己带来额外的工作,如果更改对测试浏览器没有影响,甚至会使您感到尴尬,但在客户端的首选浏览器中破坏它。
我更喜欢<br>,因为它是我从Erwise和Netscape Navigator(早期的web浏览器)开始使用的,但没有理由不选择<br>。它可能对某些预处理、可比性等有用。
即使你的选择归结为更喜欢一个而不是另一个,或者你(或者你最喜欢的HTML编辑器,例如Dreamweaver)可能希望你的代码符合xml。这取决于你。
简短的旁注:
不要与br混淆,但除此之外,您还可以考虑在HTML中使用wbr标记:一个分词机会标记,它指定在文本中的何处添加换行符。
进一步阅读,请阅读HTML5规范。
在HTML中的大多数情况下,标记是成对的。但对于换行符,您不需要一对标记。因此,为了表明这一点,HTML使用<br/>格式<br/>是正确的。使用该格式。
<br>标记在HTML中没有结束标记在XHTML中,<br>标记必须正确关闭,如下所示:<br/>
在XML中,每个标记都必须关闭。XHTML是XML的扩展,因此有效的XHTML必须遵循XML的所有规则。因此,即使是空标记(没有子节点的节点)也应该关闭。XML有一种简短的形式,称为空节点的自关闭标记。您可以将<br></br>写成<br/>。因此,在XHTML中使用<br/>。
HTML在这方面非常宽松,没有这样的规则。因此,在HTML中,像<br><hr><meta>等空节点都是不带右正斜杠的。
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/" />
并非所有标签都可以自动关闭。例如,XHTML DTD不允许使用<script src=“jQuery.min.js”/>这样的标记。
嗯。。。。。有人知道一个单一的供应商、用户代理或浏览器制造商曾经100%遵守W3C规范吗???因此,如果HTML5表示它支持所有三个break元素版本,那么你可以打赌供应商支持相同的甚至更糟糕的版本!
在这场辩论中,唯一重要的是尽可能坚持使用符合XML规范和HTML规范的编码。这意味着您应该使用break标记的正确XML版本,并鼓励您的所有团队都这样做:
<br />
代码中的img、a、hr和meta标记应采用相同的空格斜杠格式。为什么?因为:
它与旧的XHTML用户代理/浏览器向后兼容浏览器供应商无论如何都支持XML版本,因此HTML5规范没有意义。现在、过去和将来大多数用户代理的草率实现都会接受它。它允许您的标记与XML标准相比较,如果您需要返回到从标记创建XHTML/XML文档。对于所有WEB开发人员来说,继续使用遵循XML的坚实标记实践是“良好的编码实践”,包括所有小写的编码、引用的属性、转义的XML字符等。为什么?将来,如果您必须切换到XML数据,您将自动使用XML进行编码和思考。我们只能希望,在未来的万维网中,我们不再使用私有供应商实施的标准,而是使用可靠、可靠、经过验证的标记,这些标记可以更快地解析数据,更快地通过网络传输数据,并使我们未来的互联网成为使用XML的更标准化的媒介。旧的Netscape总是需要斜线前的“/”空格,否则会失败。谁在乎旧浏览器,对吧?但我仍然喜欢我的版本:)
此外,在这里的机器人和机器世界中,机器人没有HTML5为我们解决的相同的人机界面编码问题,他们会很乐意回到XML数据系统,并在转换为XML数据时更快地解析这样的UI网页。
没有结束标记的元素称为空标记。在html 4和html 5中,结束标记不是必需的,可以省略。
在xhtml中,标记是如此严格。这意味着必须以开始标记开始,以结束标记结束。