0

我有以下CSS:

<style type="text/css">
#menu {
  position: fixed;
  right: 0;
  top: 50%;
  width: 8em;
  margin: -2.5em 0 0 0;
  z-index: 5;
  background: hsla(80, 90%, 40%, 0.7);
  color: white;
  font-weight: bold;
  font-size: large;
  text-align: left;
  border: solid hsla(80, 90%, 40%, 0.5);
  border-right: none;
  padding: 0.5em 0.5em 0.5em 2.5em;
  box-shadow: 0 1px 3px black;
  border-radius: 3em 0.5em 0.5em 3em;
}
#menu li { margin: 0 }
#menu a { color: inherit }

/* Make menu absolute, not fixed, on IE 5 & 6 */
#menu { position: absolute }
*>#menu { position: fixed }

p.stb { text-indent: 0; margin-top: 0.83em }
p.mtb { text-indent: 0; margin-top: 2.17em }
p.ltb { text-indent: 0; margin-top: 3.08em }
</style>

我在我的 HTML 代码中使用了以下内容:

<ul id=menu>
  <li><a href="#L384">Section 1</a>

  <li><a href="#details">Section 2</a>

  <li><a href="#FAQ">Section 3</a>
</ul>

它不能在 IE 9 Quirks 文档模式下工作。但是,当我更改为 IE 9 标准文档模式时,它可以完美运行。

如何使我的上述代码在 IE 9 Quirks 文档模式下工作?

4

1 回答 1

0

Quirks 模式是一种非常古老的模式。它基本上是模拟 IE5 的向后兼容模式。

IE5 很久以前就发布了,从那时起 CSS 发生了很大的变化。IE9 有一个很好的渲染引擎,可以处理现代 CSS 代码。但当然,Quirks 模式试图模仿 IE5,因此它故意删除了对所有新 CSS 功能的支持。

您引用的大约一半的 CSS 代码在 Quirks 模式下不受支持。你永远不会让现代 CSS 代码在 quirks 模式下工作。

所以问题是你为什么要使用怪癖模式?

对此有两个可能的答案:出于某种向后兼容性的原因,您需要使用 quirks 模式,或者您无意中进入了 quirks 模式。

如果你真的需要使用 quirks 模式,那么对不起,你不能使用现代 CSS。

但是如果你不小心进入了怪癖模式,那么答案就是在你的 html 代码的顶部放置一个有效的 doctype。这将告诉浏览器不要使用怪癖模式。最好使用的文档类型是这个:

<!DOCTYPE html>

只需确保这是 HTML 页面中的第一行代码,IE 就会进入标准模式而不是怪癖模式。

希望有帮助。

(ps - 你可能想阅读我最近写的关于这个主题的这篇博文)

于 2013-04-17T08:57:19.177 回答