近日花时间把css的系统的走一遍,今天着重的了解了CSS的特殊性。
其实这个特性我们在平常的使用中不是很多用到,也没有必要去钻这个牛角尖去郁闷自己。不过对于系统的学习CSS,还是了解的好。
先来看一个特殊性的注释说明:
H1 {color:red;} /* specificity=1 */
P EM {color:purple;} /* specificity=2 */
.grape{color:purple;} /* specificity=10 */
p.bright {color:yellow;} /* specificity=11 */
P.bright EM.dark {color:yellow;} /* specificity=22 */
#id216 {color:blue;} /* specificity=100 */
在以上一个普通的规则中,#拥有着最高的权重。
当然,我们也可以人为的将某一个鬼着标记为最重要的。那就是在分号前插入!important。
例如:P.drak {color:#333 !important;}
!important的位置很重要,必须是放在声明的最后,分号的前面,尤其是在规则中有多个属性的时候,如果放错地方,整个声明将会失效。
接下来说说层叠的问题。
当有如下的两条同样特殊性规则出现在同一元素的时候,如:
P {color:red;}
P {color:black;}
那么<p>文字样式</p>中的文字样式是会呈现黑色的。以上的情况下,后声明的规则拥有更高的权限。
第二种情况:
P {color:red !important;}
P {color:black;}
这种情况下,虽然black是后声明的,应该拥有更高的权限,但是red上标记有!important,那么,这条规则优先。
第三种情况:
P {color:red;} /* author’s style sheet */
P {color:black;} /* reader’s style sheet */
这种情况下,依然还是黑色,虽然black后声明,但是在css1中,作者样式的权重高于读者样式,不过在css2中,读者样式的权重更高。
