在这里,我有一个处于怪癖模式的网站。:( ,我正在将一些页面修补为 CSS1 兼容模式。
我想重用现有的 CSS 并只保留一个版本,但是某些值在 quirks 和 CSS 模式中必须不同,因为它们具有不同的盒子模型。
是否有一个选择器可以判断 HTML 是处于怪癖模式还是标准模式?我知道 IE 有一些 CSS hack,但我需要支持 Chrome 和 Firefox。
在这里,我有一个处于怪癖模式的网站。:( ,我正在将一些页面修补为 CSS1 兼容模式。
我想重用现有的 CSS 并只保留一个版本,但是某些值在 quirks 和 CSS 模式中必须不同,因为它们具有不同的盒子模型。
是否有一个选择器可以判断 HTML 是处于怪癖模式还是标准模式?我知道 IE 有一些 CSS hack,但我需要支持 Chrome 和 Firefox。
这与其说是 CSS 选择器的怪癖,不如说是 HTML 的怪癖,但id
andclass
属性在 quirks 模式下变得不区分大小写,这意味着大小写不同的选择器将始终匹配。有关详细信息,请参阅此答案及其第一个脚注。
如果您可以在所有页面中修改您的 HTML,请在您的html
orbody
元素中添加一个类(类名无关紧要),并在不同情况下为您的 quirks 选择器添加相同的类名前缀。这是一个代码示例:
<html class="quirks">
<!-- Or: <body class="quirks"> -->
#foo {
width: 480px;
padding: 10px;
}
/* Capital Q instead of small q, won't match in standards mode with a doctype */
.Quirks #foo {
width: 500px;
}
这适用于所有浏览器。
如果您无法修改 HTML,那么我认为没有适用于所有浏览器的纯 CSS 解决方案。在以前的 IE 版本中,您可以简单地故意使用 CSS2.1 选择器来隐藏 IE5 怪癖和旧版本的样式(如好的 ol' html > body
hack),但您不能使用 Chrome 和 Firefox 或新的可互操作怪癖模式来做到这一点在 IE10 中引入,因为它们在怪癖和标准模式下支持相同的高级选择器。