什么';“.class1.class2”和“.class1.class2”CSS规则之间的区别是什么?

什么';“.class1.class2”和“.class1.class2”CSS规则之间的区别是什么?,css,Css,我有一张有几行的桌子: <table> <tr class="even"><td>tr0</td></tr> <tr><td>tr1</td></tr> <tr class="even"><td>tr2</td></tr> </table> 我有另一条规则(规则2)用于覆盖任何行的bgcolor: .ov

我有一张有几行的桌子:

<table>
    <tr class="even"><td>tr0</td></tr>
    <tr><td>tr1</td></tr>
    <tr class="even"><td>tr2</td></tr>
</table>
我有另一条规则(规则2)用于覆盖任何行的bgcolor:

.override, .override.even{
    background-color: green;
}
奇怪的是在IE9中,所有
甚至
行(没有
覆盖
类)都是绿色的
开发者工具为
偶数行显示了这一点:

在这两种情况下,即正确完成工作:

如果我像这样重写规则2:

.override, .override .even{ ... }
如果我将规则2移到规则1之上:

.override, .override.even{ ... }
.even { ... }
问题是
.override.偶
.override.偶
之间有什么区别

编辑:


谢谢你的回复。我忘了问的另一个问题是,为什么IE将
偶数
行显示为绿色?

类说明符之间的间距表示上升->下降关系

规则:

.test .heading { font-weight: bold; }
.heading.major { color: blue; }
将应用于此处的
元素:

<span class="test"><p class="heading">Something</p></span>
<p class="heading major">Major heading</p>
将应用于此处的
元素:

<span class="test"><p class="heading">Something</p></span>
<p class="heading major">Major heading</p>
主要标题


.override.偶
被解释为“某个元素有一个‘override’类,另一个元素有一个嵌套的
.偶
类。它与
ul li
基本相同,但适用于CSS类


override.even
被解释为“同时具有override和偶数类的单个元素”。

两个答案都是正确的,但它们没有解释IE为什么两行都显示为绿色

这是因为IE有“标准”和“怪癖”模式。要使多个类选择器工作,您需要在文件开头使用适当的DOCTYPE

您现在处于“怪癖”模式,IE不支持多个选择器,它只看到最新的类。因此,它看到这一点,并且行为绿色:

.even {
    background-color: blue;
}
.override, .even {
    background-color: green;
}


(或另一个DOCTYPE)显示在文件的开头,两行都将按预期显示为蓝色。

请参阅:


.override.偶
是两个由空格分隔的字符(即CSS,区分空格):

有时,作者可能希望选择器描述文档树中另一个元素的后代元素(例如,“包含在H1元素中的EM元素”).后代组合符表示这种关系。后代组合符是分隔两个简单选择器序列的空白。形式为“ab”的选择器表示元素B,该元素B是某个祖先元素a的任意后代。

此选择器将匹配具有类
的元素,甚至当且仅当存在具有类
覆盖的祖先元素(不一定是父元素)
(与某些电影中的角色不同,元素永远不是它自己的祖先;-)

.override。即使
是:

简单选择器序列是一个简单选择器链,不由组合器分隔。它总是以类型选择器或通用选择器开始。序列中不允许有其他类型选择器或通用选择器

简单选择器序列被评估为应用于同一元素的单个简单选择器的组合:也就是说,它将只匹配同时应用了
覆盖
偶数
类的元素

快乐编码。


<div class="class1">
   <div class="class2">
       <p>test1</p>
    </div>
</div>
测试1

如果此类型已编码,则在类之间添加空格,如.class1.class2

<div class="class1 class2">
   <p>test2</p>
</div>

测试2


如果此类型的编码添加了than,则不要在类之间使用空格,如.class1.class2

.override.偶数=选择任何类为“偶数”的元素,该类是任何类为“override”的元素的中心。override.偶数=选择任何类为“override”或/和“偶数”的元素“您需要在某个地方有一些冲突的代码。当我测试它时,行仍然是蓝色的:@Jawad:这不太正确,它将只选择两个类的元素,而不是“和/或”。我肯定我在某处读到了它。我可能错了。让我钓鱼!谢谢但为什么在IE中,所有
甚至
行都是绿色而不是蓝色?间距并不意味着父->子关系。它意味着一种亲密的关系。父母必须是祖先,但祖先不一定是父母。一个孩子必须是一个正派的人,但一个失败者也不一定是一个孩子。你怎么知道他处于怪癖模式?因为他有这两行绿色,多个类选择器对他不起作用。这两行应该是蓝色的,就像在其他浏览器中一样。+1这很可能是原因。运行我在“怪癖评论”模式中链接到的小提琴,会以绿色背景渲染线条。