【问题标题】:HTML 5: Is it <br>, <br/>, or <br />?HTML 5:是 <br>、<br/> 还是 <br />?
【发布时间】:2010-12-29 02:53:00
【问题描述】:

我试过检查other answers,但我仍然感到困惑——尤其是在看到W3schools HTML 5 reference之后。

我认为 HTML 4.01 应该“允许”单标签为 &lt;img&gt;&lt;br&gt;。然后 XHTML 出现了 &lt;img /&gt;&lt;br /&gt; (where someone said that the space is there for older browsers)。

现在我想知道在练习 HTML 5 时应该如何格式化我的代码。

&lt;br&gt;&lt;br/&gt;还是&lt;br /&gt;

【问题讨论】:

    标签: html


    【解决方案1】:

    XML 不允许让标签处于打开状态,因此它使&lt;br&gt; 比其他两个更糟糕。其他两个与第二个(&lt;br/&gt;)大致相同,以便与旧版浏览器兼容。实际上,出于兼容性考虑,/ 之前的空格是首选,但我认为它只对具有属性的标签有意义。所以我会说&lt;br/&gt;&lt;br /&gt;,以你的审美为准。

    总结一下:这三个都有效,第一个 (&lt;br&gt;) 不太“便携”。

    编辑:既然我们都对规格很着迷,我认为根据dev.w3.org 指出这一点是值得的:

    开始标签由以下内容组成 部分,完全按照以下顺序:

    1. 一个“
    2. 元素的标签名称。
    3. (可选)一个或多个属性,每个属性都必须是 前面有一个或多个空格 字符。
    4. (可选)一个或多个空格字符。
    5. (可选)一个“/”字符,仅当 element 是一个 void 元素。
    6. 一个“>”字符。

    【讨论】:

      【解决方案2】:

      &lt;br&gt; 就足够了。

      其他形式是为了与 XHTML 兼容;使编写与 XHTML 相同的代码成为可能,并使其也可用作 HTML。一些生成 HTML 的系统可能基于 XML 生成器,因此不能只输出一个裸的 &lt;br&gt; 标记;如果你使用这样的系统,使用&lt;br/&gt;就可以了,如果你不需要这样做就没有必要了。

      然而,真正使用 XHTML 的人很少。您需要将您的内容作为application/xhtml+xml 提供,以便将其解释为 XHTML,这在旧版本的 IE 中不起作用 - 这也意味着您犯的任何小错误都会阻止您的页面在浏览器中显示支持 XHTML。因此,Web 上看起来像 XHTML 的大部分内容实际上都被作为 HTML 来提供和解释。有关更多信息,请参阅Serving XHTML as text/html Considered Harmful

      【讨论】:

      • 在看到这个self-closing tag article并自己在控制台中检查代码后,我才知道在HTML5中即使你写&lt;br/&gt;&lt;br /&gt;它们最终都会被浏览器转换为&lt;br&gt; .
      • 但是,在 HTML 中这种现象是允许的,但在 SVG 中是严格的;
      【解决方案3】:

      根据spec,HTML 5 的预期形式是&lt;br&gt;,但允许使用右斜杠。

      【讨论】:

        【解决方案4】:

        我认为HTML 5 Reference Draft 的这句话提供了答案:

        3.2.2.2 虚空元素

        void elements 一词用于指定必须为empty 的元素。这些要求仅适用于 HTML 语法。在 XHTML 中,所有此类元素都被视为普通元素,但必须标记为空元素。

        这些元素被禁止包含任何内容。在 HTML 中,这些元素只有一个 start tag。可以使用self-closing tag 语法。 end tag 必须省略,因为该元素会被解析器自动关闭。

        HTML 示例:
        HTML 语法中的 void 元素。这在 XHTML 语法中是不允许的。

        <hr>
        

        示例:
        使用 HTML 和 XHTML 兼容的自闭合标记语法的 void 元素。

        <hr/>
        

        XHTML 示例:
        使用带有显式结束标记的纯 XHTML 语法的 void 元素。对于 HTML 语法中的 void 元素,这是不允许的。

        <hr></hr>
        

        换句话说:

        • 无效的 HTML&lt;IMG&gt;&lt;/IMG&gt;&lt;IMG/&gt;
        • 有效的 HTML&lt;IMG&gt;

        虽然 HTML 禁止某些结束标签,但 xhtml 需要它们:

        • 无效的 xhtml&lt;img&gt;
        • 有效的 xhtml&lt;img&gt;&lt;/img&gt;&lt;img/&gt;

        其他forbidden 的元素在 HTML 中有结束标记:

        Element Valid HTML Valid xhtml
        AREA &lt;AREA&gt; &lt;AREA&gt;&lt;/AREA&gt;
        BASE &lt;BASE&gt; &lt;BASE&gt;&lt;/BASE&gt;
        BASEFONT &lt;BASEFONT&gt; &lt;BASEFONT&gt;&lt;/BASEFONT&gt;
        BR &lt;BR&gt; &lt;BR&gt;&lt;/BR&gt;
        COL &lt;COL&gt; &lt;COL&gt;&lt;/COL&gt;
        FRAME &lt;FRAME&gt; &lt;FRAME&gt;&lt;/FRAME&gt;
        HR &lt;HR&gt; &lt;HR&gt;&lt;/HR&gt;
        IMG &lt;IMG&gt; &lt;IMG&gt;&lt;/IMG&gt;
        INPUT &lt;INPUT&gt; &lt;INPUT&gt;&lt;/INPUT&gt;
        ISINDEX &lt;ISINDEX&gt; &lt;ISINDEX&gt;&lt;/ISINDEX&gt;
        LINK &lt;LINK&gt; &lt;LINK&gt;&lt;/LINK&gt;
        META &lt;META&gt; &lt;META&gt;&lt;/META&gt;
        PARAM &lt;PARAM&gt; &lt;PARAM&gt;&lt;/PARAM&gt;

        HTML禁止某些结束标签,而xhtml 要求它们是xhtml的问题。如果您正在编写 HTML,请遵循 HTML 规则。

        与此同时,浏览器放弃了执行标准的尝试,因为每个人都弄错了。不明显:

        • &lt;/BR&gt;禁止
        • &lt;/P&gt;可选的
        • &lt;/SPAN&gt;必需的

        然后 xhtml 出现了,它的 XML 规则是 每个 元素必须有一个结束标记,人们只是假设 HTML 是同一个东西。所以标准放弃了,后来又被修改为向现实举手。

        &lt;BR&gt; 是唯一真实的形式。

        【讨论】:

        • 对我来说似乎很具体。

          都是合法的 HTML5。
        【解决方案5】:

        如果您对可比性(不是兼容性,而是可比性)感兴趣,那么我会坚持使用&lt;br /&gt;

        否则,&lt;br&gt; 可以。

        【讨论】:

          【解决方案6】:

          XML 要求所有标签都有相应的结束标签。所以对于没有内部内容的标签有一种特殊的简写语法。

          HTML5 不是 XML,所以它不应该提出这样的要求。 HTML 4.01 也不是。

          例如,在HTML5 specs 中,所有带有br 标签的示例都使用&lt;br&gt; 语法,而不是&lt;br/&gt;

          UPD 实际上,&lt;br/&gt;permitted in HTML5。 9.1.2.1, 7.

          【讨论】:

          • "HTML5 不是 XML,所以它不应该提出这样的要求。"这是否正确取决于对“HTML5”一词的解释。如果我们将 HTML5 称为语言,那么这种说法是正确的。但是,如果我们将 HTML5 称为规范,那么这种说法是不正确的。 HTML5 规范定义了“用于 HTML 和 XHTML 的词汇表和相关 API”。我知道这有点吹毛求疵,我并不是说这个答案是错误的,只是为读者提供更多信息。
          【解决方案7】:

          &lt;br&gt;&lt;br/&gt; 呈现不同。一些浏览器将&lt;br/&gt;解释为&lt;br&gt;&lt;/br&gt;并插入两个换行符

          【讨论】:

          • 什么?你知道哪些浏览器?
          • 在测试 ie5 / ns4 时代的浏览器时发现了这个。如果我没记错的话,那是在标准合规模式下。但那是很久以前的事了……
          • 对于严格的 HTML4 浏览器(实际上只是 HTML4 验证器),&lt;br /&gt; 表示 &lt;br&gt;&amp;gt;
          【解决方案8】:

          &lt;br&gt;&lt;br /&gt; 在 HTML5 中都是可以接受的,但本着 HTML 的精神,应该使用 &lt;br&gt;。 HTML5 允许右斜杠,以便与以前的 HTML 4.01 和 XHTML 1.0 文档更兼容,从而更容易迁移到 HTML5。当然&lt;br/&gt;也是可以接受的,但是为了兼容一些老版本的浏览器,右斜杠前应该有一个空格(/)。

          【讨论】:

          • @Knickerless-Noggins 我不确定您在哪里阅读,但&lt;br /&gt; 完全可以接受,而且 W3Schools 不是 HTML 规范。请参阅the HTML5 spec,其中清楚地声明“那么,如果元素是 void elements 之一,或者如果元素是 foreign element,那么可能是单个“/”(U+002F)字符。[强调]“
          • 这个答案和其他答案一样,错误地淡化了 HTML5 中严格的 XML 一致性的合法性。对 XML 的支持不是临时转换或迁移功能。对 XML 一致性的可选支持是 HTML5 的基本目标。对于使用 XML 工具处理 HTML 内容的人来说,这是一项至关重要的功能。
          【解决方案9】:
          1. 如果您在常规网站上输出 HTML,您可以使用 &lt;br&gt; &lt;br/&gt;,只要您将 HTML5 作为 text/html 提供,两者都有效。

          2. 如果您将 HTML5 用作 XHTML(即内容类型 application/xhtml+xml,带有 XML 声明),那么您必须使用像这样的自结束标记:&lt;br/&gt;

            如果您不这样做,某些浏览器可能会完全拒绝呈现您的页面(尤其是 Firefox,非常严格要求只呈现有效的 xhtml+xml 页面)。

            如 1. 中所述,&lt;br/&gt; 也适用于恰好生成为 XML 但作为常规文本/html 提供的 HTML5,没有 XML 声明(例如来自 XSL 转换生成网页或类似的东西)。

          为了消除混淆:在 HTML5 中不需要在斜杠之前放置一个空格,并且不会对页面的呈现方式产生任何影响(如果有人可以引用一个示例,我会收回这一点,但我没有'不相信这是真的 - 但 IE 肯定会用各种形式的 &lt;br&gt; 标记做很多其他奇怪的事情。

          http://validator.w3.org 的优秀验证器对于检查什么是有效的非常有帮助(尽管我不确定你是否可以依赖它来检查内容类型)。

          【讨论】:

          • 等等,text/html mimetype 是严格的 XML?
          • 如果使用 text/html,则不应使用 XML 声明来提供它,但内容可以是有效的 XML(例如,从输出 XML 的东西生成,如 XSLT 输出或序列化为的对象XML)。
          • 还是不明白:如果text/html应该有&lt;br /&gt;,我什么时候应该使用未封闭的&lt;br&gt;
          • 哦,抱歉,如果是通过 text/html,两者在技术上都对 HTML5 有效。你可以通过validator.w3.org 上的(大部分)很棒的验证器来确认这一点。我上面的措辞很差,我现在看到了,应该编辑它。
          • 我认为是 Netscape Navigator 3 或 4 不喜欢&lt;br/&gt;,在这个时代当然没什么好担心的。
          【解决方案10】:

          我所知道的是&lt;br /&gt; 在某些情况下会用白线中断,&lt;br&gt; 只是在某些情况下会中断。当我设置 IPN 脚本 (PHP) 并发送邮件并检查收件箱时,这发生在我身上。不知道为什么,但我只使用&lt;br /&gt; and &lt;br&gt; 得到的信息看起来很整洁

          在这里查看邮件:http://snag.gy/cLxUa.jpg

          文本的前两部分由&lt;br /&gt; 分隔,因此空白行、底部的最后三行文本和最后一部分由&lt;br&gt; 分隔并给出新行。

          【讨论】:

          • 那是什么浏览器?
          【解决方案11】:

          HTML(最高为 HTML 4):使用 &lt;br&gt;

          HTML 5 中:&lt;br&gt; 是首选,但 &lt;br/&gt;&lt;br /&gt; 也可以接受

          XHTML 中:&lt;br /&gt; 是首选。也可以使用&lt;br/&gt;&lt;br&gt;&lt;/br&gt;

          注意事项:

          • &lt;br&gt;&lt;/br&gt; 在 HTML 5 中无效,将被视为两个换行符。
          • XHTML 区分大小写,HTML 不区分大小写。
          • 为了向后兼容,一些旧浏览器会将 XHTML 解析为 HTML 并在 &lt;br/&gt; 上失败,但在 &lt;br /&gt; 上失败

          参考:

          【讨论】:

          • 查看了链接,首选方法是
            ,但是哪里说
            不可接受?
          • 澄清一下,对于符合 XML 的语法,&lt;br/&gt;&lt;br /&gt;(带有空格)是相等的,两者都没有偏好。请参阅XML 1.0 规范。 /&gt; 之前的空格(SPACE、制表符或 LINE FEED)是可选的,没有偏好。
          • 您能否引用 HTML5 中首选的非 XML 语法的参考资料?这对我来说是个新闻。我记得,对严格的 XML 一致性的可选支持是 HTML5 的创始目标。也许我错过了 whatwg.org 上的 HTML vs. XHTML 文档或 W3C 上的 W3C Polyglot Markup: A robust profile of the HTML5 vocabulary 中的某些内容。
          • @BasilBourque 重申我在别处对你说的话。阅读 HTML5 中标签和元素的实际规范,你永远不会发现任何建议或建议要求或建议对这些标签使用右斜杠。如果您想使用 XML 或 XHTML,那么您没有使用 HTML,那是另一回事。不要对这些 HTML 标记使用右斜杠。在其他地方,规范说你可以放一个,但它没有任何意义,什么都不做,并且浏览器被指示忽略它。因此,任何使用它都是毫无意义和无用的。
          • @Rob So Section 8.1.2.1. Start tags of Section 8. The HTML syntax 的文档,HTML 5.2 W3C Recommendation,2017 年 12 月 14 日,W3C 发布的不是 HTML 的实际规范吗?请指教。
          【解决方案12】:

          我建议使用&lt;br /&gt;,原因如下:

          1) 以不同颜色突出显示 XML 语法的文本和 XML 编辑器将使用 &lt;br /&gt; 正确突出显示,但如果您使用 &lt;br&gt;,情况并非总是如此

          2) &lt;br /&gt; 向后兼容 XHTML,格式良好的 HTML(即:XHTML)通常更容易验证错误和调试

          3) 一些旧的解析器和一些编码规范要求在右斜杠之前有空格(即:&lt;br /&gt; 而不是&lt;br/&gt;),例如 WordPress 插件编码规范:http://make.wordpress.org/core/handbook/coding-standards/html/

          根据我的经验,我从未遇到过使用 &lt;br /&gt; 会出现问题的情况,但是,在许多情况下,&lt;br/&gt; 或尤其是 &lt;br&gt; 在旧版浏览器和工具中可能会出现问题。

          【讨论】:

          • 格式良好的 HTML 不是 XHTML。
          • XHTML 根据定义是格式良好的 HTML。 XHTML 遵循 XML 的规则,根据 w3schools 的说法,“XML 是一种标记语言,其中必须正确标记文档(“格式良好”)......通过结合 HTML 和 XML 的优势,开发了 XHTML。 XHTML 是重新设计为 XML 的 HTML。” (见w3schools.com/html/html_xhtml.asp
          • HTML 可以是格式良好的,但不是有效的 XML。 W3Schools 并不总是最权威的参考。


          • 是完全有效且格式良好的 HTML。它们不是有效的 XML 标记。 HTML 语法下的 HTML 规范表明 void 元素(如

            )可能在最后一个 &gt; 之前有一个 / 字符。但它没有效果。如果它在那里,它会被忽略。如果/ 是语法的首选部分,则标准会说should 而不是may
          • @jmarkmurphy,我想你可能不熟悉“格式良好”这个术语,它是一个技术术语,指的是 XML 和 XHTML 标准要求所有标签都必须有结束标签并且必须以正确的顺序嵌套。

            不符合 XML 和 XHTML 的要求,因为它们没有结束标记,例如:

            有效,
            无效 XHTML 或 XML .当然,HTML 没有格式正确的要求,因此

            仅在 HTML 中有效。
          【解决方案13】:

          &lt;br&gt; 就足够了,但在 XHTML 中&lt;br /&gt; 是首选according to the WHATWGaccording to the W3C

          引用 HTML 5.2 W3C 建议的 Section 8.1.2.1,2017 年 12 月 14 日

          开始标签必须具有以下格式:

          1. 在属性之后,或者如果没有属性,在标签名之后,可以有一个或多个空格字符。 (某些属性后面必须跟一个空格。请参阅下面的 §8.1.2.3 属性。)

          2. 那么,如果该元素是空元素之一,或者如果该元素是外来元素,则可能存在单个 U+002F SOLIDUS 字符 (/)。该字符对 void 元素没有影响,但在外来元素上它将开始标记标记为自闭合。

          如果您使用 Dreamweaver CS6,那么它将自动完成为 &lt;br /&gt;

          要在 W3C 上验证您的 HTML 文件,请参阅:http://validator.w3.org/

          【讨论】:

          • @Julix 确实,为什么投反对票?这是此页面上为数不多的正确答案之一。 HTML5 绝对符合 XML,可选地,在 XML 语法中,单个标记必须用斜杠关闭。这么简单的事实,用黑白写成in the spec,怎么会被如此误解。
          【解决方案14】:

          &lt;br&gt;&lt;br /&gt; 在某些浏览器中的呈现方式不同,因此选择其中一个不会损害您的项目,但确实希望批量 find..replace 会影响某些浏览器中的页面呈现,这如果更改对您的测试浏览器没有任何影响,但在您客户的首选浏览器中破坏它,则可能会给您自己带来额外的工作甚至尴尬。

          我更喜欢&lt;br&gt;,因为它是我从 Erwise 和 Netscape Navigator(早期的网络浏览器)开始使用的,但没有理由不选择 &lt;br /&gt;。它可能对一些预处理、可比性等有用。

          即使您的选择归结为更喜欢其中一个的外观,或者您(或您最喜欢的 HTML 编辑器,例如 Dreamweaver)可能希望您的代码符合 xml。这取决于你。

          附注:

          不要与br 混淆,但除此之外,您还可以考虑在HTML 中使用wbr 标记:分词机会标记,它指定可以在文本中添加换行符的位置.

          如需进一步阅读,请阅读HTML5 spec

          【讨论】:

          • 参见the HTML5 spec,其中清楚地声明“那么,如果元素是void elements之一,或者如果元素是一个foreign element,那么可能有一个单个“/”(U+002F)字符。[强调添加]“&lt;br&gt;,当然是一个空元素,你可以在引用中的链接。
          【解决方案15】:

          HTML 中的大多数情况下,标签是成对出现的。但是对于换行符,您不需要一对标签。因此,为了表明这一点,HTML 使用&lt;br/&gt; 格式。 &lt;br/&gt; 是正确的。使用该格式。

          &lt;br&gt; 标签在 HTML 中没有结束标签 在 XHTML 中,&lt;br&gt; 标记必须正确关闭,如下所示:&lt;br /&gt;

          在 XML 中,每个标签都必须关闭。 XHTML 是 XML 的扩展,因此必须遵循 XML 的所有规则才能获得有效的 XHTML。因此,即使是像
          这样的空标签(没有子节点的节点)也应该关闭。 XML 有一个简短的形式,称为空节点的自闭合标签。你可以写&lt;br&gt;&lt;/br&gt; as &lt;br /&gt;。因此在 XHTML 中使用了&lt;br /&gt;

          HTML 在这方面非常宽松,没有这样的规定。因此,在 HTML 中,&lt;br&gt; &lt;hr&gt; &lt;meta&gt; 等空节点的编写没有结束正斜杠。

          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 不允许使用像 &lt;script src="jQuery.min.js" /&gt; 这样的标签。

          【讨论】:

            【解决方案16】:

            Ummm.....有谁知道一个 100% 遵循 W3C 规范的单一供应商、用户代理或浏览器制造商???所以如果 HTML5 说它支持所有三个中断元素版本,你可以打赌供应商支持相同的甚至更草率的版本!

            在这场辩论中唯一重要的是始终如一地使用符合 XML 规范和 HTML 规范的编码。这意味着您应该使用正确的 XML 版本的 break 标记并鼓励您的所有团队都这样做:

            <br />
            

            相同的空格斜杠格式应适用于代码中的 img、a、hr 和 meta 标签。为什么?因为:

            1. 它向后兼容旧的 XHTML 用户代理/浏览器
            2. 浏览器供应商无论如何都支持 XML 版本,因此 HTML5 规范没有实际意义。
            3. 现在、过去和将来大多数用户代理的草率实现都会接受它。
            4. 如果您需要返回到从您的标记创建 XHTML/XML 文档,它可以让您的标记与 XML 标准进行比较。
            5. 对于所有 WEB 开发人员来说,继续使用遵循 XML 的可靠标记实践是“良好的编码实践”,包括全部小写、引用属性、转义 XML 字符等。为什么?将来,如果您必须切换到 XML 数据,您会自动使用 XML 进行编码和思考。
            6. 我们只能希望,在未来的万维网中,我们摆脱私有供应商实施的标准,回到可靠、可靠、经过验证的标记,以更快地解析,更快地通过网络传输数据,并让我们的未来互联网使用 XML 的更标准化的媒体。

            此外,在机器人和机器世界中,机器人没有 HTML5 为我们解决的相同的人机界面编码问题,它们很乐意回到 XML 数据系统并更快地解析此类 UI 网页转换为 XML 数据。

            【讨论】:

              【解决方案17】:

              没有结束标签的元素称为空标签。在 html 4 和 html 5 中,结束标签不是必需的,可以省略。

              在 xhtml 中,标签非常严格。这意味着必须以开始标记开始并以结束标记结束。

              【讨论】:

              • 不正确。单标签在 HTML5 中与开始-结束标签对一样有效。见the HTML 5.2 spec
              【解决方案18】:

              &lt;br/&gt; 是最合适的。这个标记符号也可以在需要换行符而不是&lt;br&gt;的 Reactjs 中使用

              【讨论】:

                猜你喜欢
                • 2012-12-21
                • 2014-01-24
                • 2010-12-12
                • 2013-08-25
                • 2015-01-30
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多