# css样式优先级计算规则

css样式的优先级分为引入优先级声明优先级




# 引入优先级


引入样式一般分为,,。


外部样式:使用link引入的外部css文件。


内部样式:使用style标签书写的css样式。


内联样式:直接书写在html标签里面的css样式。




优先级如下:


内联样式 > 外部样式 = 内部样式


外部样式优先级和内部样式优先级相同,故写在后面的样式会覆盖前面的样式。




# 声明优先级


一般优先级如下:


  • !important > 内联 > ID > Class|属性|伪类 > 元素选择器
  • :link、:visited、:hover、:active 按照LVHA顺序定义


优先级算法:

等级内联选择器ID选择器类选择器/属性选择器/伪类元素选择器
示例<span style="color:red;"></span>#sp{color:red}.sp{color:red}
[type="text"]{color:red}
:nth-of-type(1){color:red}
span{color:red}
优先级1-0-0-00-1-0-00-0-1-00-0-0-1


注意:


通配符 * 的优先级为 0-0-0-0,但是优先级大于继承样式优先级。


优先级算法示例:






   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <meta http-equiv="X-UA-Compatible" content="ie=edge">
   <title>Document</title>
   <style>
       a{color: yellow;} /*特殊性值:0,0,0,1*/
       div a{color: green;} /*特殊性值:0,0,0,2*/
       .demo a{color: black;} /*特殊性值:0,0,1,1*/
       .demo input[type="text"]{color: blue;} /*特殊性值:0,0,2,1*/
       .demo *[type="text"]{color: grey;} /*特殊性值:0,0,2,0*/
       #demo a{color: orange;} /*特殊性值:0,1,0,1*/
       div#demo a{color: red;} /*特殊性值:0,1,0,2*/
   </style>



   <a href>第一条应该是黄色</a>
   <div class="demo">
       <input type="text" value="第二条应该是蓝色">
       <a href>第三条应该是黑色</a>
   </div>
   <div id="demo">
       <a href>第四条应该是红色</a>
   </div>