CSS层叠机制

css中为何要有层叠机制

由于在css中可能会有多个样式同时影响同一个元素的某个属性,层叠机制能够解决做者(写代码的人),用户(浏览页面的人)和用户代理(通常指浏览器)的样式冲突。css

在层叠中每一个样式规则都有一个权重值,当其中几条规则同时生效时,权重最大的规则优先。通常来讲做者指定的样式权重值高于用户样式权重值,用户样式权重高于客户端(用户代理)权重值。通常权重值跟对象,是否有!important,特异度和位置前后有关。在层叠顺序中,如下权重值从小到大浏览器

(1)用户代理样式字体

(2)用户通常样式代理

(3)做者通常样式code

(4)做者重要样式(!important)对象

(5)用户重要样式(!important)继承

(6)若是是两个样式来自相同的代码,如都来自做者(代码),而且它们的样式声明一样重要,则根据特异度来计算,特异度高的会覆盖特异度低的class

(7)若是特异度也相同,则越日后的样式优先级越高import

为何用户设置的重要样式比做者重要样式优先级高,这样作的缘由是为了方便用户实现一些特殊的要求,例如页面字体大小的调整等。im

选择器特异度的计算

(1)若是一个声明出如今元素的style属性中,则将a计为1;

(2)b等于选择器中全部ID选择器加起来的数量和

(3)c等于选择器中全部class选择器和属性选择器,以及伪类选择器加起来的数量和

(4)d等于选择器中全部标签选择器和伪元素选择器加起来的数量和

a-b-c-d便是选择器的特异度,比较顺序从a先比起,谁先大则优先级就越高

注意:

  • 继承的优先级最低,没有特异度
  • 结合符(如+,>)及通用选择符(*)特异度为0
.box{} /*特异度=0,0,1,0*/
.box div{} /*特异度=0,0,1,1*/
#nav li{} /*特异度=0,1,0,1*/
p:first-line{} /*特异度=0,0,0,2*/
style="" /*特异度=1,0,0,0*/
相关文章
相关标签/搜索