详解CSS优先级规则的级别与细节

 一直对Css优先级有些模糊,今天查资料然后又巩固了一下!

参考资料:

1.http://cssshare.com/1/cssyou-xian-ji-xiang-jie

2.http://www.blueidea.com/tech/web/2009/6801.asp

CSS优先级包含四个级别(文内选择符,ID选择符,Class选择符,元素选择符)以及各级别出现的次数。根据这四个级别出现的次数计算得到CSS的优先级。 

 对优先级的读法,应该是以“组”来分,这个组之间相互独立,从左到右进行对比。它们成组出现,以逗号分隔。 
  selector( a , b , c , d ) 
  compare: ↑ , ↑ , ↑ , ↑ 
  selector( a , b , c , d ) 
  正如w3c.org中原文所示,分为a,b,c,d四组,全为正整娄,默认为0,对应于不同的选择器结构和组成形式。在选择器之间的优先级进行对比时,从左到右1对1对比,当比出有大者时即可停止比较。 
li.red.level {} /* a=0 b=0 c=2 d=1 -> specificity = 0 , 0 , 2 , 1 */ 
/*compare ↑ , ↑ , √ */ 
h1 + *[rel=up]{} /* a=0 b=0 c=1 d=1 -> specificity = 0 , 0 , 1 , 1 */ 
/*compare ↑ , ↑ , ↑ , √ */ 
ul ol li.red {} /* a=0 b=0 c=1 d=3 -> specificity = 0 , 0 , 1 , 3 */ 
/*compare ↑ , ↑ , √ */ 
#x34y {} /* a=0 b=1 c=0 d=0 -> specificity = 0 , 1 , 0 , 0 */ 
/*compare ↑ , √ */ 
style="" /* a=1 b=0 c=0 d=0 -> specificity = 1 , 0 , 0 , 0 */ 

  (上表中,↑表示还要进行比较,√表示从此处已得到了结果) 
  再有,只要正确书写,仅从优先级中大概知道选择器结构形式了,如: 
  1,0,0,0表示是元素内的style; 
  0,2,1,1表示是一个由两个ID选择器,1个类或伪类或属性选择器,以及一个元素选择器组成的选择器。 
  CSS优先级规则的细节: 
  在纠正读法后,才能开始讲详细的规则: 
  a组数值只有把CSS写进style属性时才会为1,否则为0.写进style的样式声明其实不算是个选择器,所以这里            面的b,c,d组值均为0,只有真正的选择器才会有b,c,d组值。 
  b组数值决定于ID选择器#ID,有多少个ID选择器,并会进行此组数值累加; 
  c组数值决定于类、伪类和属性选择符,并会进行该组数值累加; 
  d组数值决定于元素名,即元素选择器,并会进行该组数值累加; 
  注意,这四组数值分别对应于不同类型的选择器,互不影响,根据读法法则进行比较。 
  这里没有讨论到!important,就近原则和继承,也没有实例代码,欢迎大家来webjx.com共同讨论! 
  下面是列子:CSS优先级问题 
  CSS优先级包含四个级别(文内选择符,ID选择符,Class选择符,元素选择符)以及各级别出现的次数。           根据这四个级别出现的次数计算得到CSS的优先级。 
       CSS优先级的计算规则如下: 
    * 页面中定义的样式,加1,0,0,0 
    * 每个ID选择符(如 #id),加0,1,0,0 
    * 每个Class选择符(如 .class)、每个属性选择符(如 [attribute=])、每个伪类(如 :hover)加0,0,1,0 
    * 每个元素选择符(如p)或伪元素选择符(如 :firstchild)等,加0,0,0,1 
  然后,将这四个数字分别累加,就得到每个CSS定义的优先级的值, 
  然后从左到右逐位比较大小,数字大的CSS样式的优先级就高。 

你可能感兴趣的:(css,职场,优先级,休闲)