问题描述
如果样式写成这样<p class="class_1 class_2">,那么在IE6和FF(IE6+同FF)下会显示为不同的效果。
测试代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <html><head> <title>IE6对多个CSS样式的解析</title> <style type="text/css"> body { font-size:12px; } .West { color:Green; } .West.Color { color: Red; } </style></head><body> <p class="West">大师兄,师傅被妖怪抓走了。</p> <p class="West Color">二师兄,师傅被妖怪抓走了。</p> <p class="East Color">大师兄,二师兄被妖怪抓走了。</p> <p class="East">大师兄,师傅和二师兄被妖怪抓走了。</p> <p class="Color">师傅放心吧,大师兄会来救我们的。</p></body></html> |
解析效果

测试代码
增加了新的样式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <html><head> <title>IE6对多个CSS样式的解析</title> <style type="text/css"> body { font-size:12px; } .West { color:Green; } .West.Color { color: Red; } .East.Color { color: Blue; } </style></head><body> <p class="West">大师兄,师傅被妖怪抓走了。</p> <p class="West Color">二师兄,师傅被妖怪抓走了。</p> <p class="East Color">大师兄,二师兄被妖怪抓走了。</p> <p class="East">大师兄,师傅和二师兄被妖怪抓走了。</p> <p class="Color">师傅放心吧,大师兄会来救我们的。</p></body></html><br> |
解析效果

如果样式改成这样
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <html><head> <title>IE6对多个CSS样式的解析</title> <style type="text/css"> body { font-size:12px; } .West { color:Green; } p.West.Color { color: Red; } .East.Color { color: Blue; } </style></head><body> <p class="West">大师兄,师傅被妖怪抓走了。</p> <p class="West Color">二师兄,师傅被妖怪抓走了。</p> <p class="East Color">大师兄,二师兄被妖怪抓走了。</p> <p class="East">大师兄,师傅和二师兄被妖怪抓走了。</p> <p class="Color">师傅放心吧,大师兄会来救我们的。</p></body></html> |
解析结果,原来在IE6中显示为蓝色的都显示为红色。而FF保持不变。
嗯 是IE6不支持这个选择器
我有找到一个用来使IE6支持该选择器的js
demo参见这里http://ie7-js.googlecode.com/svn/test/multiple-classes.html
该js lib见这里 http://code.google.com/p/ie7-js/
上面代码修改后如下
不过仍然和我的需求有出入,因为我给div增加多个class的操作也是用js来做的,所以这里就有问题了,解决思路可能是在添加多个class后,再调用一下这个js lib中跟multiple classes有关的函数.不过暂时没找到……
结论
在IE6中,连续拼写的两个样式,.class_1.class_2,识别为后一个.class_2。后定义的优先。
在FF中,必须匹配完整的样式,少一个都不识别。
如果加上了p限定,则优先级高于不加p的样式,参考CSS优先级。
来源:http://www.cnblogs.com/0417/archive/2010/07/15/1778033.html