使用自闭合的DIV标签是否可行?

84

1
我想诚实地说不行。我认为在xhtml中只有特定的标签可以自闭合,它们包括<hr />, <input />, <img />。但如果可以工作,请随意使用它。 - Howdy_McGee
6个回答

55

不,HTML 4.x 没有自闭合标签的概念。

XHTML 中是有效的。


1
这是正确的 - 同时,对于我们使用AngularJS或类似框架的人来说,一个自闭合的DIV将会在IE8中破坏应用程序。 - Stone
1
只是要注意,有时在特定位置使用自闭合标签时,jQuery可能无法正常工作。 - Magnus Smith
@Stone - 你能给我指一个例子/解释吗?我没在任何地方看到过。 - gogogadgetinternet
HTML 4 理论上通过 晦涩的 NETTAG 功能 具有自闭合元素:在 SGML 中,<p/hello/ 相当于 <p>hello</p>。W3C DTD 验证器支持这种怪异的特性,但没有浏览器支持它。 - Kornel
1
@StevenLinn img元素被称为“void元素”,或者在HTML 4.x术语中称为“empty元素”。 - Mr Lister
显示剩余2条评论

15

div标签不是有效的自闭合标签。如果想要一个空的

,最好这样写:

<div id="myDiv"></div>

10

根据XML声明和XHTML 1.0和1.1文档定义,这是可以的:当紧接着无结束标签的起始标签闭合符(/)时,可以使用无结束标签(>),您的代码等同于<div id="myDiv"></div>

但是不同的消费者是否能够正确处理这个问题就完全不同了。

HTML 4.01使用的SGML声明允许标记缩写,但其无结束标记具有不同的语法;在那里,您可以编写<div id="abc"/this is a non-empty div/。同样,浏览器支持可能会因此而异。(我猜测支持"没有")。

HTML的未来版本(HTML5?如果这个名字还活着)不再实现为SGML语言,因此它们只允许它们所说的,而不需要正式的语法。


3
翻译从英语到中文。只返回翻译的内容:+1有更多细节。可能一条相应的链接会很有帮助 ^.^ - Howdy_McGee
1
@Howdy_McGee:检查 W3C,他们有DTD以及HTML 4.01的(多个版本的)SGML声明,还有XML的(强制性)SGML声明。在Linux上,可以在“/usr/share/xml”和“/usr/share/sgml”中查找。 - Kerrek SB

3

我将这两个代码块通过W3C 验证器进行了验证。将代码复制并粘贴到直接输入选项卡下的输入框中,即可查看结果。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <title>title</title>
    <meta http-equiv="content-type" content="text/html;charset=UTF-8" >
  </head>
  <body><div id="Mydiv" /></body>
</html>

使用过渡型HTML 4.01的代码块未通过验证过程。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
  <head>
    <title>Test</title>
    <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
  </head>
  <body><div id="Mydiv" /></body>
</html>

当我添加了XHTML 1.0 transitional doctype,将meta标签改为自闭合标签,并添加了html xmlns行后,验证通过了。
因此,回答你的问题的第一部分,它是符合XHTML 1.0 Transitional doctype的有效HTML。至于你是否可以使用javascript来正确填充它,我不确定。


1
不,它是有效的XML(而不是HTML),据我所知,只有在文档以application/xml mimetype发送时才会被接受。
但是,如果使用XHTML和XHTML Doctype声明,则可能会起作用。

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