← How does CSS work · 样式从哪来 / 规范默认值与继承 待审核 2 / 6
level 1 · initial & 继承

规范默认值与继承

最底层的 Level 1 是每个属性的 initial value——规范规定的初始值,不针对任何标签(四层模型见四层默认样式)。但这里有个常被忽略的分叉:属性分两类——

可继承(inherited):如 colorfont-sizeline-height。若元素自己没设,它会自动取父元素的 computed 值,一路往子孙流——这就是你在 <body> 上设一次 color 全站文字都变色的原因。

不可继承(non-inherited):如 marginpaddingborderbackground。元素没设时直接用属性的 initial value,看父元素——否则给容器加一道 border,所有后代都会跟着出现边框,布局会失控。

注意 unset 的双重行为:它的解析结果取决于属性——属性可继承时它等于 inherit(取父值),属性不可继承时它等于 initial(回到初始值)。切到不同属性、把孙设成 unset 对比。

1 · 常见属性:继承还是不继承

属性 可继承? 为什么这样设计
color / font-* / line-height ✓ 是 排版属性,通常希望整片文字统一,设一次即向下传递
text-align / letter-spacing / white-space ✓ 是 同上,都属于「文字怎么排」
visibility / cursor / list-style ✓ 是 语义上应对整棵子树一致生效
margin / padding / border ✗ 否 盒子尺寸,继承会让每层都叠加,导致布局失真
background / width / height ✗ 否 每个盒子各管各的,不该被父级强加
display / position / float ✗ 否 布局角色由元素自身决定

经验规则:排版相关的属性多半可继承,盒模型 / 布局相关的多半不继承。不确定时,用上面的 demo 或 MDN 每个属性页的「Inherited」字段确认。