Internet explorer 8 IE8不接受怪癖模式下的多个类?
我遇到的情况是IE8似乎正在删除CSS选择器。我觉得这很难相信,但我不知道发生了什么 在.css文件中,我有以下声明:Internet explorer 8 IE8不接受怪癖模式下的多个类?,internet-explorer-8,css-selectors,quirks-mode,css,Internet Explorer 8,Css Selectors,Quirks Mode,Css,我遇到的情况是IE8似乎正在删除CSS选择器。我觉得这很难相信,但我不知道发生了什么 在.css文件中,我有以下声明: #srp tr.objectPath.hover td { border-top:none; } 但是,当我通过内置开发人员工具检查IE8中的文件时,声明被修改为: #srp TR.hover TD { border-top:medium none; } 我不关心case中的更改或规则的重述,但是删除“.objectPath”是一个真正的问题,因为它的目标比
#srp tr.objectPath.hover td {
border-top:none;
}
但是,当我通过内置开发人员工具检查IE8中的文件时,声明被修改为:
#srp TR.hover TD {
border-top:medium none;
}
我不关心case中的更改或规则的重述,但是删除“.objectPath”是一个真正的问题,因为它的目标比我想要的更广泛
我注意到这个页面是,并且必须保持在怪癖模式
知道发生了什么吗
谢谢
tr.objectPath.hover
如果试图使用hover
伪类,则语法不正确。正确的语法应该使用冒号(即tr.objectPath:hover
)。当机器读取您的代码时,它将objectPath
读取为tr
的类名,但当它到达hover
时,它将删除旧的类名,并将其替换为hover
类(无论是否存在属于该类的任何元素。而且,如果是这种情况,那么我看不出您通过引用:hover
实例的子级来尝试做什么
如果您实际上使用了hover
作为类名(我不建议这样做,因为阅读您的代码的人可能会感到困惑)您希望CSS应用到<代码> TT/<代码>的<代码> > ObjtPrase和<代码> HOVER <代码>类中,您可以考虑只为两个类的元素创建一个新类,而不是使用这两个元素(即为了澄清,我不建议这样做。相反,我建议联系有权访问HTML源代码的人(假设您与他们合作)这样,他们就可以对属于这两个类甚至属于它们的
td
子类的tr
元素应用更简单的修复方法,即添加一个objectPathhover
类。看起来您的声明中有一些不正确的语法,但很难准确地说出您在做什么。您是否试图匹配悬停状态还是有一个类实际上被称为“悬停”
如果要进入状态,请尝试:
#srp tr.objectPath:hover td {
...
}
如果存在另一个类,则可能需要两个单独的声明:
#srp tr.objectPath td {
...
}
#srp tr.hover td {
...
}
在怪癖模式下,IE 8呈现页面,并将DOM视为IE 5.5呈现的对象。这就是怪癖模式下IE 8忽略多个类的原因。这在IE 8中不是一个错误,如果您希望正确解析和呈现页面,则必须设置适当的DOCTYPE以在标准模式下呈现页面。实际上有一个类“hover”使用您描述的两个类对我没有帮助,因为它基本上与IE所做的相同:将样式应用于任何具有classname.hover父级的td,而不是仅应用于具有class.objectPath和.hover父级的td。据我所知,css不是这样工作的。您可以声明单独的类和有重叠,或者可以沿控制树级联(.object在.hover下,反之亦然)但这不是一个只有在两个规则都存在时才适用的规则。在您的情况下,听起来您需要创建第三个类。您的建议会起作用,但需要更改生成标记的代码(我不控制)。问题仍然是,为什么IE要重新声明?我对此做了更多的研究,并得出结论Tim Sheiner:IE很可能会向您展示声明的规范形式(正如它所理解的那样)。顺便说一句,hover伪类不会在怪癖模式下工作(锚除外)