特异性和类选择(级联)

问题描述:


特异性和类选择(级联)

假设我们要找出什么会特别<h2>元素的颜色属性。


1)在试图找出一个选择具体怎么是,规则的一个说,选择与班级更大数量比用较少的班级选择更具体。因此,在下面的示例中的特定<h2>的颜色应该是绿色的(这个例子是从一些网站采取的):

.one .two .three .four .five .six .seven 
{ 
    color: green; 
} 


.eight .nine .ten 
{ 
    color: blue; 
} 


一)首先,如果我指定不止选择器中有一个类,那么它不起作用......换句话说,文本不会是绿色或蓝色。任何想法为什么它不起作用?

B)忽略了一个事实,如果它包含一个以上的类选择是行不通的: 特有的类。二。三。四。五。六。七类后裔。一或我们特定的<h2>元素是所有这些类的成员吗?


2)另一条规则说,如果我们带选择ID的更大的数量比用更少的ID选择更具体。因此,在下面的示例中的特定<h2>颜色应该是绿色:

#one #two # three #four #five #six #seven 
{ 
    color: green;  
} 


#eight #nine #ten 
{ 
    color: blue; 
} 


一)上述要求是有道理的只有#two一个#一个孩子,#three一孩子#two和孙子#一个 etc ?!正确?


3)I假设在用户的CSS文件中定义的更具体的选择器被选择过在作者的CSS文件中定义的特定的选择少?


感谢名单


编辑:

第一CSS规则适用于与类的 “七” 的所有元素,其中有一个祖先与类的“六”,而“六”又具有“五”的祖先等等。

严,你的意思是规则适用于元素E7,但只有: - E7是类的成员。E6是元素E6的类别.six和后代的成员E6 -E5是类别.5的成员和元素E4的后代等。 ?


我还问,如果我对我的第二个问题的假设(在战后初期)是正确的?

+0

我很想知道,您从哪个网站获取此代码? – DisgruntledGoat 2009-09-10 20:36:47

+0

http://www.maxdesign.com.au/2009/06/30/css-cascade/ - 第61页和第63页 – SourceC 2009-09-10 21:22:00

+1

我认为幻灯片应该回答大部分问题。我认为他们通过使用不适用于特定标签的样式将事情混淆到最后。幻灯片39回答你的问题3 - 重要性的顺序是浏览器,作者,用户,所以是的用户样式表会赢。但几乎没有人使用它们。 – DisgruntledGoat 2009-09-11 00:35:36

第一个CSS规则适用于所有具有“七”类的元素,其中有一个“六”类的祖先,而“六”类的祖先具有类“五”的祖先,依此类推。

您发布的原始规则与任何h2标签都不匹配,除非它们具有“绿色”类和所有这些祖先元素。我认为你的例子非常复杂,因为只有当你拥有至少八个嵌套元素时,特殊规则才会发挥作用!

一个简单的例子是这样,它的目标有三个不同的规则H2标签(排名不分先后):

h2 { color: red; } 
.one h2 { color: green; } 
.two .three h2 { color: blue; } 

在这个例子中的H2将是红色:

<h2>Heading 2</h2> 

在这个例子中的h2将是绿色的:

<div class="one"> 
    <h2>Heading 2</h2> 
</div> 

在这个例子中的h2将是蓝色的。即使.one是最近的祖先,.two.three意味着后者的CSS规则适用。

<div class="two"> 
    <div class="three"> 
     <div class="one"> 
      <h2>Heading 2</h2> 
     </div> 
    </div> 
</div> 

一个类似的过程适用于ID,除了ID有10倍的“权重”的类。看看w3 specs了解更多详情。这是一个非常艰难的话题,但是我希望能让事情变得更加清晰。

老实说,这种情况经常不会出现 - 我尽量保持我的CSS规则相当通用,并避免使用不同类名的大量嵌套元素。如果你一直在努力研究特异性,那么你的HTML可能会变得太复杂了!

+0

嗨,如果你愿意提供一些更多的帮助...我编辑了我的第一篇文章以回应你的回复......无论如何,thanx帮助我 – SourceC 2009-09-10 21:23:07

当你把类选择之间的空隙,就意味着“后裔” ...

相反,你应该把他们都togheter:

.one.two.three.four.five.six.seven 
{ 
    color: green; 
} 


.eight.nine.ten 
{ 
    color: blue; 
} 

这意味着,所有这些类的元素会变成有色的,而不是所有元素的后代,而这些元素的顺序依次是类。

+0

我不认为这回答了所有问题... – DisgruntledGoat 2009-09-10 20:38:16