众所周知,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是不可接受的。
答案 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>