3

为什么<div style="width:50%" />不在 xHTML 中呈现?如果我<div style="width:50%"> &nbsp; </div>只这样做,它就会被渲染。我错过了什么吗?min-width 有帮助吗?我使用严格的 xHTML 1.0

是否可以仅使用 CSS 修复它,或者我必须更改 html 标记?

4

3 回答 3

10

因为在 XHTMLHTML DIV中都不是自闭合元素。

<div>您必须将开始标记 ( ) 与结束标记 ()配对</div>

关于你问题的另一部分:

<div style="width:50%">&nbsp;</div>

<div style="width:50%"></div>

之间的区别在于,第一个有一个不间断的空格字符来填充DIV. 第二个什么都没有。这就是为什么您在第二个版本上看不到任何渲染的原因。

此外,XML 和 XHTML 不是一回事。如果标签不是匹配对的一部分,则后者借用了自关闭标签的约定。

于 2009-10-24T03:17:18.710 回答
5

尽管在 XHTML 中通常应避免自关闭<div />(因为它不会在旧版 HTML 浏览器中按预期进行解析),但这实际上与 XHTML 无关:这是一个布局问题。

<div></div>

是一个不包含内容的块元素。因此它的高度为零;你看不到它。

<div>&nbsp;</div>

是一个包含一行文本的块元素。它的高度等于line-height财产。

如果你想让一个空的 div 有一定的高度,你必须这样说:

<div style="width: 50%; height: 2em; background: red;"></div>

这是一个旧的 IE5 错误,空 div 仍然会呈现高度,就好像它包含一行文本一样。当您使用标准模式文档类型时(无论您使用的是 HTML 还是 XHTML、Transitional 或 Strict,您都应该使用该文档类型),您不会看到这种行为。

于 2009-10-24T11:29:53.320 回答
4

XHTML 中允许的自闭合标记如下:

<area />
<base />
<basefont />
<br />
<hr />
<input />
<img />
<link />
<meta />

DIV 必须同时具有开始和结束标记。

于 2009-10-24T03:23:08.887 回答