有没有办法让IE6在遇到'>'时优雅地失败?

时间:2010-12-10 09:26:48

标签: html css internet-explorer-6 css-selectors

众所周知,IE6不支持使用>进行直接后代选择,但我最近发现的是,如果你有多个以逗号分隔的选择规则,如果有{{1},它会忽略所有选择规则}}

以下是我用来测试问题的代码:

>

我假设(没有阅读文档)这是预期的行为,因为当你写<body> <style> .one, .two{ width: 100px; height: 100px; background-color: #FFCCAA; } body .two, body > .one{ background-color: #CCFFAA; } </style> <div class="one"></div> <div class="two"></div> </body> 时,你实际上并没有定义两个选择器,而是一个有两个部分。

我仍然要问......是否有任何解决方案并不意味着两次编写我的CSS规则?

谢谢你,
阿林

P.S。使用JavaScript是不可接受的。

2 个答案:

答案 0 :(得分:1)

很抱歉,但我不相信如果不使用Javascript就可以。

有一些JS黑客(Dean Edwards IE7脚本让人想到),但没有JS,简单的事实是IE6不支持它,所以你不能使用它。

我想如果您准备做任何不涉及JS的,您可以考虑使用Google Frame插件,它完全取代IE中的渲染引擎,转而使用Chrome发动机。但这比Javascript所做的任何东西都要大得多,所以我想你也不想这样做。

坦率地说,最好的选择是放弃对IE6的支持。但我很欣赏这可能不是一个选择。 (但这对你的理智有好处)

如果你必须支持IE6,你唯一真正的选择就是在所有内容上放置类或ID而忘记使用除最基本的CSS选择器以外的任何东西。

对不起。

答案 1 :(得分:1)

您遇到的行为是standard CSS error recovery的一部分,因此IE6正在正确执行(对于不支持CSS2的浏览器)。

您需要复制规则,并单独使用CSS2选择器:

<style>
    body .two {
        background-color: #CCFFAA;
    }
    body > .one  {
        background-color: #CCFFAA;
    }
</style>