为什么在XHTML中不同于<br/> <br/>?

时间:2011-02-15 17:03:58

标签: html xhtml

以下是HTML页面的完整来源:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
           "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head></head>
<body>
one<br>
two<br />
three<br></br>
four    
</body>
</html>

当我在IE8或Chrome中查看页面时,有人可以解释为什么在“三”和“四”之间会出现一个额外的空行?

我认为标准应该使所有浏览器看起来都一样,据我所知,这个页面符合XHTML过渡标准

6 个答案:

答案 0 :(得分:8)

因为 XHTML规范 HTML Compatability Guidelines指定br 必须应该自动关闭。显然Chrome和IE8并未遵循规范并为您关闭打开的规格,从而创建了第二个换行符。

答案 1 :(得分:8)

已经有一些好的答案,但只是要指出HTML5实际上指定,当解析为text / html时,<br></br>应该被解析为两个<br>开始标记。 / p>

请参阅http://dev.w3.org/html5/spec/tokenization.html#parsing-main-inbody

中的An end tag whose tag name is "br"

Firefox 3.x仅在怪异模式下执行此操作,但Firefox 4也在标准模式下执行此操作。

答案 2 :(得分:5)

虽然valid,但这是非常不寻常的代码。更有可能的是开发人员错误地使用<br></br>,而他们的意思是<br/>。因此,大多数浏览器都将其解释为<br/>

答案 3 :(得分:3)

三到四之间的额外行是因为它们之间有两个<br />标记。第一个将内容移动到下一行,第二个将内容向下移动一行。这是预期的行为。

编辑抱歉,认为以下是严格的。
此外,<br />标记是空标记,因此必须关闭。因此,我不认为<br>在技术上符合xhtml标准。它应该是<br />

答案 4 :(得分:1)

I.E似乎解释了和两者都是“链接中断”,并为每个人添加了类似的中断。

答案 5 :(得分:1)

在XHTML中 - 它们是相同的 - 如果您将文档作为application/xhtml+xml提供,则浏览器将没有区别(假设浏览器支持XHTML,IE 8及更低版本不支持)。

如果您将文档作为text/html投放,则会将其视为HTML,而不是XHTML,而HTML <br>则是禁止结束标记的元素。如果您包含显式结束标记,则某些浏览器会出错,以假设</br><br> 开始标记。

如果您声称XHTML是text / html,则必须遵循各种其他规则。这些在compatibility guidelines中描述。这个特别适用于elements that can never have content

作为text / html服务是一个黑客攻击,旨在成为过渡到XHTML的短期措施。各种各样的事情(包括缺乏微软的支持)阻止了这种过渡的结束,HTML 5运动放弃了这个想法并转回到可选和禁止的结束标签(但添加/>作为语法糖) 。