上QQ阅读APP看书,第一时间看更新
2.1.1 优先级的底层——继承
关于继承,只需要记住这样一句话:被继承的CSS声明的优先级一定位于整个CSS世界的底层。
举个例子,HTML代码和CSS代码如下所示:
<p id="text">文字</p>
p::first-line { color: blue; }
#text { color: green !important; }
请问,文字颜色是blue
还是green
?
答案是blue
!
这里其实比的不是选择器的优先级,而是继承与否。
color
属性是一个可继承属性,无论<p>
元素的color
属性如何设置,对::first-line
伪元素而言,其都是继承属性,优先级最低,因此,最终的颜色是blue
。
另外,如果一个CSS属性同时继承自多个元素,则DOM层级越深的元素所继承的CSS优先级越高。
例如下面这个例子,请问<p>
元素的文字颜色是red
还是green
?
<!DOCTYPE html>
<html>
<body>
<p>文字颜色</p>
</body>
</html>
:root { color: red; }
body { color: green; }
没错,是green
!
<body>
元素的DOM层级比<html>
深,因此,最终的文字颜色是body
标签设置的属性值green
。
以上就是继承在CSS声明的优先级中扮演的角色,还是很浅显易懂的。接下来介绍级联,做好心理准备,级联中所包含的优先级规则要复杂得多,当然,要学习的东西也更多。