HTML闭合标签

6
什么时候需要使用闭合标签,什么时候只需要斜杠就足够了?
<div></div>

与。

<div />

可能是重复的问题:为什么自闭合的脚本标签不起作用? - Diodeus - James MacFarlane
2
那个斜杠是XHTML的东西。XHTML是一个失败的概念,所以不要使用它。空元素只包含一个标签(例如<input type="text">),而非空元素有一个开始标签和一个结束标签(例如<div> content </div>)。 - Šime Vidas
如果您想知道哪些元素为空,哪些元素非空,请查阅标准中的元素,并检查其“内容模型”。链接 - Šime Vidas
5个回答

4

对于那些(可能)包含内容的元素,如divabody,需要闭合标签。

对于仅由元素本身组成的元素,如imglinkbr,斜杠就足够了。


“链接”是什么?我的理解是,任何有内容的标签都需要关闭。大多数表单元素是例外。我有一个问题,哪种关闭方法是适当的? - santa
@santa 空元素(void元素)不应该被关闭。非空元素应该用结束标签来关闭(例如 </div>)。 - Šime Vidas

3
如果你的DOCTYPE设置为XHTML,那么只能使用自闭合标签<div />,因为它是从XML中借用的,而在XML中可以使用自闭合标签。如果你的DOCTYPE设置为HTML 4.01或HTML 5,则不能使用自闭合标签。请注意,保留HTML标签。

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

我不确定你需要这个的确切用途,但如果是用于清除浮动,你可以使用以下方法,而不必担心兼容性问题,特别是当IE进入仿真模式时。

<style type="text/css">
.clear-fix {
    clear: both !important;
    display: block !important;
    font-size: 0 !important;
    line-height: 0 !important;
    border: none !important;
    padding: 0 !important;
    margin: 0 !important;
    list-style: none !important;
}
</style>
<br class="clear-fix" />

我认为你在前两句话中说得很好,但在后面的帖子中失去了我。有点过度使用"!important",哈哈?IE很烦人,但我认为可以通过正确的DOCTYPE标记来解决。 :) +1 - santa
@Patrick 当然可以。你可以在HTML4或HTML5文档中使用<br />元素,在XHTML文档中使用<br>元素。浏览器不会介意 - Šime Vidas
这是!important标签的一个完美使用案例。由于clear-fix是一个类,它在覆盖其值时处于排名最低的位置。当您清除浮动时,这些状态应始终是正确的,无论如何。 - user888750
@Šime 在 XHTML 文档中插入 <br> 标签是无法通过 W3C 标准验证的。 - user888750

2
区别在于,如果您不使用闭合标签,您只能设置标签的属性。
如果您需要其中的一些内容,则需要同时使用开放和闭合标签,并将内容放在两者之间。
例如,如果您需要使用<br/>跳过一行,从技术上讲,您也可以使用<br></br>,但是没有人会这样使用,因为跳过一行永远不会有任何内容在中间。
对于<div>,您可能会在其中有很多内容,因此需要在最后使用闭合标签。

1
如果您查看HTML DTD(4.01 strict,因为5 dtd仍在进行中尚未发布),您会发现某些元素被定义为EMPTY,这意味着这些元素可以自我关闭。没有此定义的元素不能自我关闭。
例如,br元素:
<!ELEMENT BR - O EMPTY                 -- forced line break -->
元素不是这样定义的,所以自闭合的
是错误的。
<!ELEMENT DIV - - (%flow;)*            -- generic language/style container -->

W3C开始覆盖自己的规则了吗?为什么需要关闭任何没有内容的元素,比如<br>、<hr>等? - santa
@santa - HTML不是XML。XHTML是XML。对于HTML,您可以使用<br><br />,它们的含义相同。但是在XHTML中,您不能仅使用<br>,必须将其关闭。这些规范是不同的,因为它们基于不同(尽管相似)的其他规范。 - Oded
那么,当你编写HTML时,为什么会担心它会被解释为XML文档呢? - santa
@santa - 只要你正确编写并使用DOCTYPE进行正确标识,就不必担心了。有些人习惯于使用XML,因为它比HTML更容易解析,所以他们尝试确保自己的HTML与XML兼容,以便更容易地进行自动化处理。 - Oded

0
如果元素是自包含的,并且具有渲染自身所需的所有内容,而没有使用任何 innerHTML,那么您可以使用简写形式 <hr />,否则您应该使用。
 <div> InnerHTML here </div>

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