竞争规则:css允许多次将同一个规则赋予某个元素。层叠排序根据规则中使用的选择符将规则划分6组,高优先级组里的规则会覆盖低优先级组里的规则。普通的选择符会设置文档的总体样式,更具体的选择符会覆盖普通选择符,以为其提供更加特殊的样式
6个选择符群组:
1. 使用!important规则群组拥有最高优先级,他们会覆盖掉所有非!important规则
#i100 {border:6px solid black !important;}
2. 优先级第二高的群组是指那些嵌在style属性里面的规则。因为使用style属性会增加代码的维护难度,不建议使用
3. 优先级第三高的群组是指含有一个或多个ID选择符的规则,如 #i100 {border:6px solid black }会覆盖*.c100{border:4px solid black}
4. 优先级第四高的群组是指含有一个或多个类,属性或僞类选择符的规则,如*.c100{border:4px solid black}会覆盖div{border solid black}
5. 优先级第五高的群组是含有一个或多个元素选择符的规则,如div{border:2px solid black}会覆盖 *{ border:0px solid black}
6. 优先级最低的是只有通配符的规则
当竞争规则属于同一个选择符群组时,会按照选择符的种类和数量对其进行优先级排序,当选择符有高优先级选择符多于它的竞争选择符,它将获得更高的优先级。如#i00 *.c20 *.c10{}优先级高于#i100 *.c10 div p span{}
当竞争规则位于同一选择符群组并拥有同样等级和数量的选择符时,他们的优先级按所处位置来排,以下6个位置群组按从高到低优先级顺序排列:
1. 最高优先级位置为html文档头部中的<style>元素
2. 第二高是通过<style>元素里的@import语句来引入的样式表
3. 第三高是通过<link>元素来链接的样式表
4. 第四高是通过<link>链接的样式表通过@import语句引入的样式表
5. 第五高是由终端用户绑定的样式表,除非使用了!important
6. 最低优先级是浏览器提供的默认样式表
简化层叠的方法:
1. 把绑定的样式表数量最小化,但是不使用@import语句
2. 避免使用!important运算符
3. 对每一个选择符进行排序
/*通配选择符*/
/*元素选择符*/
/*类,属性和僞类选择符*/
/*ID选择符*/
/*!important通配选择符*/
/*!important元素选择符*/
/*!important类,属性和僞类选择符*/
/*!important ID选择符*/