为何存在

这是高效率书写样式与保持其一致性的一种解决方案,不必书写每个DOM元素的样式,允许子元素自动地获取其父元素的某些样式属性

组成部分

  • DOM树:继承的结构基础
  • 可继承属性:这些属性可以被继承,一般为颜色,字体相关
    • 常见例子: color, font-family, font-size, font-weight, line-height, text-align, list-style
  • 不可继承属性:这些属性不可被继承,一般与长宽,尺寸,位置相关
    • 常见例子: width, height, padding, margin, border, background-color
  • 继承控制关键字:几个特殊的CSS属性值,允许我们精确的控制继承行为
    • inherit: 强制继承。可以用于一个不可继承的属性,让它强行从父元素那里获取值。
    • initial: 重置为初始值。让属性恢复到 CSS 规范定义的默认值,无视任何继承。
    • unset: “不设定”。如果该属性默认是可继承的,unset 的效果就等同于 inherit;如果该属性默认是不可继承的,unset 的效果就等同于 initial。它是一种智能的“重置”。

运作机制

对于一个可继承属性,以下为继承的运作流程

  • 首先,检查是否有直接应用到该元素的规则(比如 p { color: red; })。如果有,则使用该规则(这是“级联”胜出)。
  • 如果没有直接规则,浏览器就会查看其直接父元素上该属性的计算值,并使用那个值。
  • 如果父元素也没有,就继续向上查找,直到 <html> 根元素。
  • 如果到根元素都没有找到,则使用该属性的 initial 值。