<div />和<div> </ div>之间有区别吗?

Ste*_*rno 32 html xhtml

在我的网页上遇到问题,主页中的页脚没有针对某个特定页面正确显示.在那个页面上,我有一个

<div style="clear:both" /> 在底部.

在敲了一会儿之后,我看到我需要改变以使页脚正确显示的是将该行更改为:

<div style="clear:both"></div>
Run Code Online (Sandbox Code Playgroud)

我不明白为什么这样写它会产生不同的结果.它们在语义上是不相同的吗?我检查并仔细检查了这是我做的唯一改变.在两者之间来回翻转会改变页脚的行为.

所以我的问题是......那些不相同吗?他们之间有什么区别?

编辑:奇怪的是,他们都在我们想要的页面上面的东西.我的意思是,在自我关闭的div标签的情况下,如果我完全删除它,页面肯定会做出反应,所以它必须用它做SOMETHING而不是完全忽略它.

小智 40

<div />不是有效的标记.不允许使用自动关闭标签.

您需要使用完整版<div></div>.

自闭式div标签没有任何意义,因为它会导致空div.大多数浏览器通常不会呈现空div.

  • <DIV />是(在XHTML)有效的,但如果你的XHTML作为HTML处理(通过用文本/ html内容类型,而不是正确的应用程序/ XHTML + xml的被服务IE)那么它将被处理为标记汤并被视为开口标签而非自动关闭标签. (19认同)
  • 因为<div />被浏览器错误地视为尚未关闭的<div>标记.因此,它之后的所有内容都被认为是在其中.由于标签永远不会在文档的其余部分中完成,因此文档本身格式错误并导致呈现差异. (9认同)

Don*_*nut 31

根据HTML 4.01规范,第7.5.4节("分组元素:DIVSPAN元素"):

开始标记:必需,结束标记:必需

因此,自动关闭<div>标记(如您指定的第一个示例:) <div />无效的.


Sco*_*vey 16

如果我没记错 - <div />是无效的.<div></div>如果您希望它随处可用,请使用.结束标记是必需的,因此做一些<div class="Clear" />不起作用的事情.

所有分组元素的行为方式都相同.您将看到DIV和SPAN的相同行为.

编辑:找到这个链接,同时查看@Donut发布的答案中的链接 - 它是一个矩阵,显示哪些元素有可选的结束标记要求(等等.)看起来很有趣,所以我想我会把它发布到这里与其他人分享.


kdg*_*ory 11

这取决于您正在使用的DOCTYPE.

对于XHTML,它是XML,这两个标签是等价的.您可以通过将以下DOCTYPE之一添加为页面的第一行来向浏览器发出此信号:

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

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

<!DOCTYPE html 
     PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
Run Code Online (Sandbox Code Playgroud)

对于HTML 4.01,这是所有(?)浏览器在没有DOCTYPE时所假设的,某些标记必须表示为开放关闭.大多数块级标记都需要这样,包括非标记标记<SCRIPT>.如果您查看WDG HTML文档,您将看到特定标记是否需要打开 - 关闭,或者可以通过"syntax"项表示为空标记:

Syntax      <DIV>...</DIV>
Run Code Online (Sandbox Code Playgroud)

  • 浏览器根据内容类型而不是Doctype在XML解析和标签解析之间切换.Doctype在Quirks和Standards模式之间切换,这对解析标记的方式几乎没有影响(但很多关于如何处理CSS和JS). (4认同)