HTML 浏览器无法很好地呈现空 DIV
HTML empty DIVs not well rendered by browsers
我收到有时包含以下代码的 XHTML 文档:
<div align="center" />
我的问题是浏览器(Firefox 38.0.1,Chrome 43.0.2357.65)将此代码显示为开始 <DIV>
标记,而不是像我预期的那样显示为空 div(<DIV></DIV>
)。因此,文档的其余部分完全乱七八糟。
是浏览器错误还是 XHTML 功能?该代码看起来完全合法(虽然毫无意义,但我不是生产者)并被 XML 解析器(Perl XML::LibXML、https://validator.w3.org/check)接受。
您可以使用以下 XHTML 代码(由 https://validator.w3.org 验证)在您的浏览器中查看它的外观。最后一个 DIV 显示为带边框的文本,这是不应该的。
<!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">
<head>
<title>Foo</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<div style="border: 1px solid black; color: red;">
<div />
<div>Should be red and inside the border.</div>
</div>
<div>Should be outside the border and not red.</div>
</body>
</html>
与 XHTML Strict Doctype 相同。
解决办法是,不要这样做!
在HTML中,一个<div>
标签是一个开始标签,不管它是否包含/
。 /
被视为错误并被丢弃。
在 XHTML 中,这将是一个完整的 div
,是的。但是,如果 XHTML 文件以 application/xhtml+xml
MIME 类型提供,则它们只是 XHTML 文件。
文件的内容是什么并不重要;如果文件以 text/html
的 MIME 类型提供,就浏览器而言,它是一个 HTML 文件。
文件扩展名为 .xhtml
的普通文件被视为 XHTML,.html
被视为 HTML。如果您使用 PHP 或 ASP.NET 等系统,您需要为 MIME 类型发送适当的 HTTP header,否则它将使用默认值(通常是 text/html ).
我收到有时包含以下代码的 XHTML 文档:
<div align="center" />
我的问题是浏览器(Firefox 38.0.1,Chrome 43.0.2357.65)将此代码显示为开始 <DIV>
标记,而不是像我预期的那样显示为空 div(<DIV></DIV>
)。因此,文档的其余部分完全乱七八糟。
是浏览器错误还是 XHTML 功能?该代码看起来完全合法(虽然毫无意义,但我不是生产者)并被 XML 解析器(Perl XML::LibXML、https://validator.w3.org/check)接受。
您可以使用以下 XHTML 代码(由 https://validator.w3.org 验证)在您的浏览器中查看它的外观。最后一个 DIV 显示为带边框的文本,这是不应该的。
<!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">
<head>
<title>Foo</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<div style="border: 1px solid black; color: red;">
<div />
<div>Should be red and inside the border.</div>
</div>
<div>Should be outside the border and not red.</div>
</body>
</html>
与 XHTML Strict Doctype 相同。
解决办法是,不要这样做!
在HTML中,一个<div>
标签是一个开始标签,不管它是否包含/
。 /
被视为错误并被丢弃。
在 XHTML 中,这将是一个完整的 div
,是的。但是,如果 XHTML 文件以 application/xhtml+xml
MIME 类型提供,则它们只是 XHTML 文件。
文件的内容是什么并不重要;如果文件以 text/html
的 MIME 类型提供,就浏览器而言,它是一个 HTML 文件。
文件扩展名为 .xhtml
的普通文件被视为 XHTML,.html
被视为 HTML。如果您使用 PHP 或 ASP.NET 等系统,您需要为 MIME 类型发送适当的 HTTP header,否则它将使用默认值(通常是 text/html ).