css继承由属性自身定义决定,color、font-family、font-size等文本字体类属性默认可继承,margin、display、background等布局装饰类属性不可继承;inherit强制取父级计算值,unset依属性可否继承而定,initial一律回浏览器默认值。

CSS样式继承不是“父元素写了,子元素就一定有”,而是由每个属性自身定义决定的——浏览器只按规范走,不猜你的意图。可继承属性集中在文本、字体、列表和部分交互表现上;不可继承属性(如margin、display、background)哪怕你显式写了,也不会往下传。
哪些CSS属性默认会继承?
可继承属性必须手动查规范或靠经验积累,不能靠直觉。高频且实用的包括:
-
color、font-family、font-size、font-weight、font-style -
line-height、text-align、text-indent、letter-spacing、word-spacing -
visibility、cursor、list-style-type、quotes、direction
注意:text-shadow、box-shadow、background、border、padding、margin、width、height、display、position 全部不可继承。哪怕你在div上写了display: flex,它的子元素仍是display: inline(或浏览器默认值)。
为什么子元素没继承到 font-size 或 color?
大概率不是继承失效,而是被更高优先级规则覆盖了。DevTools里看到“Inherited from …”是灰色的,说明它确实继承了,但后面有更重的声明把它顶掉了:
- 检查子元素是否有
style="color: #000"这类内联样式——权重 1000,轻松压过继承值 - 看是否命中了 ID 选择器(如
#header p)或高权重类组合(如.card .title) - 别忽略浏览器默认样式:
h1~h6、strong默认带font-weight: bold,会覆盖你从父级继承来的font-weight: 400
inherit / unset / initial 到底怎么选?
这三个关键字行为差异明显,混用容易出错:
-
inherit:强制取父元素**计算后**的值,哪怕该属性本不可继承(比如border: inherit会报错) -
unset:对可继承属性 =inherit,对不可继承属性 =initial;但它不等于“清空”,例如父级color: blue,子元素写color: unset,结果还是蓝色 -
initial:一律回浏览器默认值——color: initial是黑色(不是透明),font-size: initial是 16px(多数浏览器)
真正想“取消继承并恢复默认”,通常要写color: initial,而不是unset。
表单控件和伪元素是继承的例外区域
input、select、button 等原生表单控件在多数浏览器里会忽略父级文字样式,必须显式加font-family: inherit、font-size: inherit才能透传;::before、::after伪元素虽是后代,但继承行为受生成内容限制:content不继承,color可继承,margin不继承——这些边界点最容易漏查。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











