为什么<div style="width:50%" />
不在 xHTML 中呈现?如果我<div style="width:50%"> </div>
只这样做,它就会被渲染。我错过了什么吗?min-width 有帮助吗?我使用严格的 xHTML 1.0
是否可以仅使用 CSS 修复它,或者我必须更改 html 标记?
为什么<div style="width:50%" />
不在 xHTML 中呈现?如果我<div style="width:50%"> </div>
只这样做,它就会被渲染。我错过了什么吗?min-width 有帮助吗?我使用严格的 xHTML 1.0
是否可以仅使用 CSS 修复它,或者我必须更改 html 标记?
因为在 XHTML或HTML DIV
中都不是自闭合元素。
<div>
您必须将开始标记 ( ) 与结束标记 ()配对</div>
。
关于你问题的另一部分:
<div style="width:50%"> </div>
<div style="width:50%"></div>
之间的区别在于,第一个有一个不间断的空格字符来填充DIV
. 第二个什么都没有。这就是为什么您在第二个版本上看不到任何渲染的原因。
此外,XML 和 XHTML 不是一回事。如果标签不是匹配对的一部分,则后者借用了自关闭标签的约定。
尽管在 XHTML 中通常应避免自关闭<div />
(因为它不会在旧版 HTML 浏览器中按预期进行解析),但这实际上与 XHTML 无关:这是一个布局问题。
<div></div>
是一个不包含内容的块元素。因此它的高度为零;你看不到它。
<div> </div>
是一个包含一行文本的块元素。它的高度等于line-height
财产。
如果你想让一个空的 div 有一定的高度,你必须这样说:
<div style="width: 50%; height: 2em; background: red;"></div>
这是一个旧的 IE5 错误,空 div 仍然会呈现高度,就好像它包含一行文本一样。当您使用标准模式文档类型时(无论您使用的是 HTML 还是 XHTML、Transitional 或 Strict,您都应该使用该文档类型),您不会看到这种行为。
XHTML 中允许的自闭合标记如下:
<area />
<base />
<basefont />
<br />
<hr />
<input />
<img />
<link />
<meta />
DIV 必须同时具有开始和结束标记。