一、任务目标
理解CSS优先级
掌握CSS优先级的应用
二、任务背景
当创建的CSS样式表越来越多、越来越复杂的时候,一个元素的样式可能受到多个CSS样式表的影响,到底这个元素显示的是哪个样式表的样式呢?通过CSS优先级可以帮助我们得出结论。
三、任务内容
1、CSS优先级
浏览器通过CSS选择器的优先级来判断元素到底应该显示那个属性值
CSS的优先级如下
-
【内联样式】 > 【ID选择器】 > 【类选择器、属性选择器、伪类选择器】 > 【标签选择器 、伪元素选择器】
通配符选择器【*】和关系选择符【+(相邻选择符)、>(子代选择符)、~(兄弟选择符)、" "(后代选择符)等】对优先级没有影响
在选择器使用较多的情况下,使用CSS优先级判断元素的属性值显示很容易出错且不利于排错,可以通过给选择器添加权重的概念来帮助我们更好的理解CSS选择器的优先级
选择器 | 权重 |
---|---|
内联样式 | 1000 |
ID选择器 | 100 |
类选择器、属性选择器、伪类选择器 | 10 |
标签选择器、伪元素选择器 | 1 |
相邻选择符、子代选择符、兄弟选择符、后代选择符 | 0 |
2、选择器权重计算
选择器的权重可以相加
#header .nav li { list-style: none; }
该选择器的权重 = ID选择器100 + 类选择器10 + 标签选择器1 = 111
对于同一个元素的两种选择器均声明了同一个属性情况
-
权重相同时,根据HTML代码从上往下执行的特点,后面选择器会覆盖前面选择器中相同的属性
-
权重不同时,权重大的选择器生效
3、!important规则
当你在一个样式声明中使用
!important
规则时,这个样式将覆盖其他的任何声明!important
规则与优先级无关,但是会直接影响样式的最终显示结果