CSS 层叠、继承与源顺序

串起 CSS 的层叠、继承、优先级和源顺序,回答为什么最终样式会是这样。

#type / concept #status / growing #resource / css #tech / dev / frontend

[!info] related notes

CSS 层叠、继承与源顺序

很多 CSS 冲突问题,不是因为属性不会写,而是没搞清楚浏览器到底按什么规则决定最终样式。

一句话主线

多个规则同时命中同一个元素时,浏览器会综合看来源、优先级、继承关系和书写顺序,最终得出实际样式。

什么是层叠

层叠就是:

当多条样式规则都命中同一个元素时,浏览器要决定最后采用哪一个值。

这也是 CSS 里 Cascading 的来源。

继承是什么

有些属性会从父元素传给子元素,最典型的是文字相关属性。

常见会继承的属性:

  • color
  • font-size
  • font-family
  • line-height

常见不会继承的属性:

  • margin
  • padding
  • border
  • width
  • height

源顺序是什么

如果两个规则优先级完全一样,那么后写的会覆盖先写的。

.title {
  color: blue;
}

.title {
  color: red;
}

最终通常会是红色。

和优先级的关系

优先级负责回答“谁更具体”,源顺序负责回答“同样具体时谁更后面”。

所以排查顺序通常是:

  1. 有没有命中
  2. 优先级谁更高
  3. 如果一样,谁写得更后

最短记忆方式

层叠回答“谁赢”,继承回答“哪些属性会往下传”,源顺序回答“同级时谁覆盖谁”。

创建于 2026/3/25 更新于 2026/5/27