以下是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过渡标准
答案 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运动放弃了这个想法并转回到可选和禁止的结束标签(但添加/>
作为语法糖) 。