我简直不敢相信我的网站上发生了什么。
<html xmlns="http://www.w3.org/1999/xhtml">
<!DOCTYPE html>
<html>
<head>
一切正常。
这条线怎么能解决所有问题呢?!
答案
通常是一个<!DOCTYPE>
声明用于区分 HTMLish 语言的版本(在本例中为 HTML 或 XHTML)。
不同的标记语言会有不同的行为。height:100%
。
XHTML
<!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" xml:lang="en" lang="en">
<head>
<style type="text/css">
table { height:100%;background:yellow; }
</style>
</head>
<body>
<table>
<tbody>
<tr><td>How tall is this?</td></tr>
</tbody>
</table>
</body>
</html>
…并将其与以下内容进行比较:(注意明显缺乏<!DOCTYPE>
宣言)
HTML(怪异模式)
<html>
<head>
<style type="text/css">
table { height:100%;background:yellow; }
</style>
</head>
<body>
<table>
<tbody>
<tr><td>How tall is this?</td></tr>
</tbody>
</table>
</body>
</html>
您会注意到表格的高度截然不同,两个文档之间的唯一区别是标记的类型!
太好了…现在,什么意思<html xmlns="http://www.w3.org/1999/xhtml">
做?
但这并不能回答你的问题。xmlns
属性使用XHTML文档的根元素:(根据维基百科)
XHTML文档的根元素必须是
html
,并且必须包含一个xmlns
属性将其与 XHTML 命名空间关联起来。
您看,重要的是要了解 XHTML 不是 HTML,而是XML- 一个非常不同的生物。 xmlns
属性只是文档需要成为有效 XML 的内容之一。Wikipedia上的XML名称空间但是我正在省略该信息,因为它实际上与您的问题无关!)
但是为什么是<html xmlns="http://www.w3.org/1999/xhtml">
修复CSS?
如果像这样构建你的文档……(正如你在你的评论)
<html xmlns="http://www.w3.org/1999/xhtml">
<!DOCTYPE html>
<html>
<head>
[...]
…正在修复您的文档,这让我相信您对 CSS 和 HTML 不太了解(无意冒犯!),事实是没有 <html xmlns="http://www.w3.org/1999/xhtml">
它表现正常并且和 <html xmlns="http://www.w3.org/1999/xhtml">
这不是——而你只是思考 是的,因为您习惯于编写无效的 HTML,因此在怪癖模式。
我提供的上述示例是同一问题的示例;height:100%
应该导致的高度<table>
是整个窗口,并且DOCTYPE
实际上破坏了他们的 CSS…但事实并非如此;html, body { height:100%; }
CSS规则才能达到自己想要的效果。