CSS三大特性与权重叠加

关键词:css, 三大特性, 权重叠加, !important

层叠性(新定义的样式会覆盖已定义的样式)

  1. 样式冲突,遵循的原则是就近原则。 那个样式离着结构近,就执行那个样式。
  2. 样式不冲突,不会层叠。

继承性

子标签会继承父标签的某些样式,如文本颜色和字号。

特殊性(权重、优先级)

specificity用一个四位的数 字串(CSS2是三位)来表示,更像四个级别,值从左到右,左面的最大,一级大于一级,数位之间没有进制,级别之间不可超越。 子元素的权重为0。

权重的叠加

权重叠加只会累计数值,不会跨级别进位。所以不管多少个0,0,0,1叠加,也不会变成0,0,1,0

div ul  li   ------>      0,0,0,3
.nav ul li   ------>      0,0,1,2
a:hover      -----—>      0,0,1,1
.nav a       ------>      0,0,1,1   
#nav p       ------>      0,1,0,1

继承的权重

子元素继承父元素的样式,不继承父元素样式的权重,继承过来的权重为0。

优先级

权重是优先级的算法,层叠是优先级的表现。

  1. 使用了 !important声明的规则。
  2. 内嵌在 HTML 元素的 style属性里面的声明。
  3. 使用了 ID 选择器的规则。
  4. 使用了类选择器、属性选择器、伪元素和伪类选择器的规则。
  5. 使用了元素选择器的规则。
  6. 只包含一个通用选择器的规则。

!important 的使用

    p {
        /* 标签选择器的权重 0,0,0,1 */
        /* !important的权重 无穷大 */
        /* 只要出现!important,将会被执行 */
        color: gray !important;
    }