层叠性

定义一种算法,用于解决不同来源的样式表定义有相同元素的样式属性,属性值会发生冲突的问题。
关键点层叠算法是在特异性算法之前应用。

哪些CSS实体会参与层叠性算法?

实体 -n即可以是现实的事物,也可以指无物质形式的事物,具有抽象性,具体表达的含义就要看上下文环境。

  • 一个人的实体,可以指人本身,也可以指生命、信念。
  • 语言实体,即语言的语法(语句)和表达的语义。

css实体 -n声明、@规则、@规则中嵌套声明组成css实体形式。

在CSS中只有声明才会参与层叠算法。@charset、@font-face规则中没有声明,不会参加层叠算法。
关键点1条件规则组@support、@media中的声明,首先需要CSS解析判断为true后,然后其中的属性加入层叠算法、特异性算法。
关键点2@import会将引入的css样式表,直接插在@import书写的位置,然后其中的属性加入层叠算法、特异性算法。
关键点3@keyframes中的属性不会加入层叠算法。也就是说@keyframes中的声明只会来自于自身,不会有其他来源,也就不会有层叠。但是在动画播放时其声明优先级最高。
关键点4一个元素绑定有多个动画,如果几个动画通过延时,互不影响,其正常执行。但是当几个动画同时执行时,同时有相同的属性时,只会执行最后定义的动画属性。

CSS属性来源及层叠顺序

  1. 用户代理样式表(浏览器默认样式表)。
  2. 用户样式表(浏览器使用者自己添加的样式表,可以理解为在浏览器调试工具里添加的样式规则)。
  3. 网页开发者的样式表。
    • 外部样式表:(优先级最低,离标签最远)
    • 内部样式表: