CSS优先级

权值的计算:

权值等级划分, 一般来说是划分4个等级:

    第一等级:代表 内联样式,如 style="",权值为 1,0,0,0;

    第二等级:代表 ID选择器,如 #id="", 权值为 0,1,0,0;

    第三等级:代表 calss | 伪类 | 属性 选择器,如 .class | :hover,:link,:target | [type], 权值 0,0,1,0;

    第四等级:代表 标签 | 伪元素 选择器,如 p | ::after, ::before, ::fist-inline, ::selection, 权值 0,0,0,1;

    此外,通用选择器(*),子选择器(>), 相邻同胞选择器(+)等选择器不在4等级之内,所以它们的权值都为 0,0,0,0;

 

权值计算公式:

    权值 = 第一等级选择器*个数,第二等级选择器*个数,第三等级选择器*个数,第四等级选择器*个数;

 

权值比较规则:

    当两个权值进行比较的时候,是从高到低逐级将等级位上的权重值(如 权值 1,0,0,0 对应--> 第一等级权重值,第二等级权重值,第三等级权重值,第四等级权重值)来进行比较的,而不是简单的 1000*个数 + 100*个数 + 10*个数 + 1*个数 的总和来进行比较的,换句话说,低等级的选择器,个数再多也不会越等级超过高等级的选择器的优先级的

 

遵循原则:

  • 优先级就近原则,同权重情况下样式定义最近者为准
  • 如果优先级相同,则最后出现的样式生效
  • 优先级为: !important > id > class > tag!important 比 内联优先级高
  • 继承得到的样式的优先级最低
  • 通用选择器(*)、子选择器(>)和相邻同胞选择器(+)并不在这四个等级中,所以它们的权值都为 0
  •  样式表的来源不同时,优先级顺序为:内联样式> 内部样式 > 外部样式 > 浏览器用户自定义样式 > 浏
    览器默认样式
 1 <head>
 2   <style>
 3     .app1 {
 4       color:red;
 5     }
 6     .app2 {
 7       color:blue;
 8     }
 9 
10   </style>
11 </head>
12 <body>  
13   <div class="app1 app2">123</div>
14 </body>
15 
16 //最终效果是blue,style样式中下面的会将上面的覆盖

——————————————————————

参考资料:https://www.cnblogs.com/cnblogs-jcy/p/8574177.html

原文地址:https://www.cnblogs.com/oaoa/p/14669395.html