HTML约定-自闭合标签,>或/>,另一种方式<br>或<br/>。

12

在从网上学习一些教程时,我看到很多人会将标签未闭合,例如 <link ..><img ..>。但是当我使用Netbeans编辑它们(HTML/JSP页面)时,这些标签会显示红色背景,直到我加入斜杠为止。 <br> --> <br/>

哪种编写基于HTML的代码的方法才是正确的?


我已经通过谷歌、必应等搜索引擎进行了许多搜索,但都没有找到有用的东西。 - Luke
相关:https://dev59.com/DXI-5IYBdhLWcg3wQV8Z - John Y
3个回答

8

这两种方式对于HTML都可以使用,但不适用于XHTML,因为它是XML方言。

有些元素不需要闭合标签(/>),特别是空元素(那些没有内容的元素)。例如 <hr><br>。这些元素也可以是自闭合的(分别是 <hr /><br />)。这种自闭合等同于在开标签后立即添加一个闭标签。

对于XML,这样的非闭合标签是无效的 - 它必须被关闭,可以是自闭合或者有一个闭合标签。所以 <hr> 不是有效的XML,但 <hr /><hr></hr> 是有效的。

HTML不是XML,但为了更好的兼容性,一些工具会尽可能地发出类似XML的HTML。


根据您删除的“@Downvoter,能解释一下吗?”评论,我之所以给您点了踩,是因为原始答案是错误且无用的。显然您匆忙发布了它。现在,在您修正并添加了三段重申Chris的内容后,它变得更加合理了。我已经取消了踩。 - BalusC
@BalusC - 好的。 我确实倾向于发布快速答案,然后添加细节并充实它,并纠正任何不准确之处。 - Oded
1
好答案,已点赞。不过需要注意的是,在 HTML 中,<div /><div></div> 不同;浏览器可能会将其解读为只有 <div>,从而破坏文档。 - DavidJCobb

5

这取决于你使用的文档类型。如果你使用的是HTML 4,则不应使用自闭合标签;如果使用XHTML,则应该使用自闭合标签以生成有效的XML;如果使用HTML 5,则可以省略结束斜杠,但不是必需的。

W3C HTML验证器将在尝试在HTML 4中使用关闭标签时发出警告:

序列“/”可以根据文档的DOCTYPE以至少两种不同的方式解释。对于HTML 4.01 Strict,'/'终止了标签'>'。然而,由于许多浏览器即使在存在HTML 4.01 Strict DOCTYPE的情况下也不会这样解释它,因此最好完全避免在纯HTML文档中使用它,并将其仅保留用于那些以XHTML编写的文档。


1

>HTML 中是正确的,但在 XHTML 中是不正确的。请检查您的 DOCTYPE。

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">

对于 HTML strict

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

对于 XHTML strict


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接