13 题: 为什么<br />而不是?

在...创建的问题 Mon, Nov 2, 2009 12:00 AM

这是你曾经读过的一件事,说“啊哈!”然后忘了完全是我的情况。

为什么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/>

所以最后的空格是可选的。

    
20
  1. 它看起来不错。我想......
    2009-11-02 02:48:40Z
  2. 不,不,还有其他原因。
    2009-11-02 02:48:57Z
  3. 还&lt; br /&gt;是XML和不是 HTML。 HTML只是&lt; br&gt;
    2009-11-02 02:54:37Z
  4. 你的意思是XHTML,而不是XML。
    2009-11-02 20:52:57Z
  5. 他的意思是XML:checkout XHTML中的X代表什么。
    2009-11-13 09:26:00Z
  6. 醇>
    13答案                              13 跨度>                         

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

    编辑:啊,我们在这里:

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

      

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

        
    21
    2009-11-02 02:49:31Z

    w3c将其指定为语法:

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

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

        
    45
    2010-01-19 02:00:54Z
    1. + 1引用语法
      2010-01-19 02:03:32Z
    2. 最后只有0或1个空格?也许S代表任何数量的空白?
      2010-01-19 02:03:36Z
    3. 醇>

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

    编辑浏览器是Netscape 4

        
    23
    2017-05-23 12:18:10Z
    1. + 1平息骚乱
      2010-01-19 06:04:24Z
    2. 醇>

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

        
    15
    2010-01-19 21:17:01Z
    1. + 1。如果愿意,你甚至可以在那里放一个换行符。
      2010-01-19 02:04:50Z
    2. 在XHTML中没有区别,但是在纯HTML中 - /实际上结束了标记,所以你的<br/>会显示为break + >。惯例`/&gt;`被采纳为妥协
      2010-01-19 02:09:29Z
    3. 你知道,尽管我发表评论,但我暂时忘记了'html'方面。当然,在足够多的HTML中,/&gt;表格不起作用。
      2010-01-19 02:52:36Z
    4. @ K Prime - 该空间无助于解决该问题。只有浏览器得到错误的HTML才允许HTML兼容的XHTML工作。
      2010-01-19 06:36:02Z
    5. 醇>

    对于XHTML:两者都有。对于HTML4及更早版本:都不是。

        
    9
    2010-01-19 06:01:22Z
    1. + 1太差了,唯一正确的答案只有一个upvote
      2010-01-19 19:01:49Z
    2. 醇>

    有一些背景可以补充Matt Hamilton的答案。

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

    当创建可以表现为XHTML或HTML的多语言文档时(注意:“表现为” - 不是“有效”),有必要使用&lt; br /&gt;或&lt; br&gt;&lt; /br&gt;。但是,在旧浏览器中,甚至在现代浏览器中以怪异模式呈现页面时,&lt; /br&gt;表现得像&lt; br&gt;,所以&lt; br&gt;&lt; /br&gt;产生两个换行符。

        
    7
    2009-11-02 20:50:38Z
    1. 我会说... facepalm </br>产生换行符:)
      2009-11-03 06:37:10Z
    2. 这是因为有一个人曾经这样做过一次,抱怨它不起作用,然后浏览器开始支持它。这就是为什么Firefox使用600M的RAM ......很多“特殊情况”。
      2009-11-03 06:58:54Z
    3. 醇>

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

        
    7
    2010-01-23 23:02:19Z
    1. 这才是真正的原因。 HTML没有自动关闭标记语法 - 标记是否需要显式关闭是它的标记类型的函数(例如,<br>不是<div>)。当您编写<br />时,HTML解析器会看到一个带有名为“/”的空属性的<br>标记(就像输入的空“checked”属性一样)。由于<br>标记在HTML中已经自动关闭,因此在HTML和XML模式下的工作方式相同。
      2009-11-02 20:58:24Z
    2. @ Chuck。我以前见过这个解释,但我不能说我相信它。如果是这样,那么使用Firebug或Hixie的Live DOM Viewer对DOM进行渲染应该将属性显示为/=“”,但它们不会。见这里: software.hixie.ch/utilities/js/live-dom-viewer/... (在br元素上放置”已检查“属性的道歉 - 我知道它无效但是它证明了我的观点。)
      2009-11-02 21:13:13Z
    3. @ Alohci:这是Firefox的一个实现细节。完全按照HTML标准,没有<br/>标签。
      2009-11-02 21:25:48Z
    4. 简单false:HTML 4.01中唯一有效的br元素是<BR><br /><br/>都是无效的标签汤,但前者在真实浏览器中的问题较少。
      2009-11-12 23:55:34Z
    5. “&lt; br /&gt;是有效的(旧)HTML。”不,它不是,但浏览器应对它。如果你使用text /html MIME类型,我已经看到它使用空格的建议。如果您使用application /xhtml + xml。
      ,则不需要它们
      2010-01-21 12:20:47Z
    6. 醇>

    <br/><br />都是正确的。 <br />首先出现的原因是支持那些不了解新<br/>语法的旧浏览器。这真是一种破解,其中/被解释为没有价值且被忽略的属性。

        
    5
    2010-01-19 02:04:34Z

    两者都是正确的,两者都将被Web浏览器接受。你也可以节省额外的角色,并使用<br/>

        
    4
    2010-01-19 01:59:34Z
    1. 保存一个额外的字符是好的=)
      2010-01-19 02:45:34Z
    2. 醇>

    两者都是正确的。但我会使用<br />来保持我的代码一致......因为我永远不会写

     
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
    

    而不是

     
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    

    只是为了保存一个字节...而第二个版本是更好的可读性。但那只是品味问题。按你的意愿去做,但要保持一致: - )

        
    3
    2010-01-19 02:02:54Z

    两者都可以正常工作。假设你要求福音派的原因,我更喜欢&lt; br /&gt;

        
    1
    2010-01-19 01:58:45Z
    1. 出于恶魔般的原因,我更喜欢&lt; br /&gt;
      2010-01-19 02:02:56Z
    2. 醇>

    两者都是正确的。

        
    0
    2010-01-19 11:15:13Z

    <br>。你还没有使用XML。

        
    0
    2010-01-19 14:33:49Z
来源放置 这里