CSS中的特殊性

近日花时间把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中,读者样式的权重更高。

Random Posts

留下回复