我简直不敢相信我的网站上发生了什么。

<html xmlns="http://www.w3.org/1999/xhtml">
<!DOCTYPE html>
<html>
 <head>

一切正常。

这条线怎么能解决所有问题呢?!

答案

你搞混了超文本标记语言XHTML

通常是一个<!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规则才能达到自己想要的效果。

来自: stackoverflow.com