为什么<br />而不是?

Ste*_*ini 20 tags xhtml

这是你读过一次的东西之一,说"啊哈!" 然后忘了 完全是我的情况.

为什么xhtml中的换行标记优先用空格写入<br />而不是也用ok格式<br/>?我记得原因很有趣,而你可以想象用谷歌找到它并不容易.

当然,这不是xml良好格式的问题.来自W3C

[44]    EmptyElemTag       ::=      '<' Name (S Attribute)* S? '/>' 

   Empty-element tags may be used for any element which has no content, whether
   or not it is declared using the keyword EMPTY. For interoperability, the 
   empty-element tag should be used, and should only be used, for elements which 
   are declared EMPTY.

Examples of empty elements:

<IMG align="left"  src="http://www.w3.org/Icons/WWW/w3c_home" /> 
<br></br> 
<br/>
Run Code Online (Sandbox Code Playgroud)

所以最后的空间是可选的.

Mat*_*att 45

w3c将其指定为语法:

EmptyElemTag       ::=      '<' Name (S Attribute)* S? '/>'
Run Code Online (Sandbox Code Playgroud)

这意味着打开括号,名称,多个(空格和属性)标记,可选空格,斜杠和结束标记.据此,两者都是正确的.

  • 结尾真的只有0或1个空格吗?也许S代表任何数量的空白? (4认同)

SLa*_*aks 23

一些较旧的浏览器没有空间就没有正确解析元素,因此大多数Web开发人员都使用<br />.我不记得哪个浏览器,但我相信它们已经灭绝了.

编辑:浏览器是Netscape 4.


Mat*_*ton 21

如果我没记错的话,这只是因为一些旧的浏览器在斜线之前没有空格的自关闭标签出现问题.我怀疑这是一个现在的问题,但很多开发人员(包括我自己)养成了包含空间的习惯.

编辑:啊,我们在这里:

http://www.w3.org/TR/xhtml1/#guidelines

包括结尾之前/空元件,例如一个空间和> <br />,<hr /><img src="karen.jpg" alt="Karen" />.此外,对空元素使用最小化标记语法,例如<br />,因为<br></br>XML允许的替代语法在许多现有用户代理中给出不确定的结果.


bma*_*ies 15

XHTML中没有正确的方法.它们在XML中正式相同.空白在该位置并不重要.

  • 在XHTML中没有区别,但是在纯HTML中--``实际上结束了标记,因此你的`<br/>`将显示为break +`>`.惯例`/>`被采纳为妥协 (2认同)

Jör*_*tag 9

对于XHTML:两者都有.对于HTML4及更早版本:都没有.


jro*_*way 7

<br />是有效的(旧)HTML,而<br/>不是.如果您以XML格式提供XHTML,则无关紧要.如果您将其作为服务text/html,那么除了有效的XHTML之外,它还需要是有效的HTML.(为什么将XHTML作为HTML提供?因为IE不能将XHTML理解为XML,并且因为没有主要的浏览器会在下载文本的过程中开始渲染XHTML,但是他们会对HTML进行渲染.我的博客似乎加载速度不慢,因为该网站速度很慢,但因为浏览器在获取所有内容之前不会开始呈现页面.我讨厌浏览器.)

  • 这才是真正的原因.HTML没有自动关闭标记语法 - 标记是否需要显式关闭是它的标记类型的函数(例如,```不是`<div>`).当您编写`<br />`时,HTML解析器会看到一个带有名为"/"的空属性的```标记(就像输入的空"checked"属性一样).由于```标签已经在HTML中自动关闭,因此在HTML和XML模式下的工作方式相同. (2认同)
  • 简单的假:HTML 4.01中唯一有效的br元素是`<BR>`.`<br />`或`<br/>`都是无效的标签汤,但前者在真正的浏览器中遇到的问题较少. (2认同)
  • "<br />是有效的(旧)HTML." 不,它不是,但浏览器应对它.如果你使用text/html MIME类型,我已经看到它使用空格的建议.如果使用application/xhtml + xml,则不需要它们. (2认同)

Alo*_*hci 7

添加到Matt Hamilton的答案的一点背景.

至少有一个问题浏览器是Netscape 4.快速检查显示,在该浏览器中,<br/>(即没有空格)不会导致换行.事实上,它似乎没有做任何事情.<br />(即带空格)确实执行换行符.

在创建可以表现为XHTML或HTML的多语言文档时(注意:"表现为" - 而不是"有效"),有必要使用<br />或<br> </ br>.但是,在旧浏览器中,甚至在现代浏览器中以怪异模式渲染页面时,</ br>的行为与<br>类似,因此<br> </ br>会产生两个换行符.

  • 我会说...**facepalm**为`</ br>`产生换行符:) (2认同)

Asa*_*aph 5

这两个<br/><br />是正确的.首先出现的原因<br />是支持那些不了解新<br/>语法的旧浏览器.它实际上是一种/被解释为没有价值且被忽略的属性.