默认继承的CSS属性包括color、font-family、font-size、line-height、text-align、visibility;width、height、margin、padding、border、background等不继承;inherit可强制继承任意属性,取父元素计算后的值。
哪些 CSS 属性默认会继承?
不是所有属性都会继承,只有明确被设计为可继承的才会向下传递。比如
、
、
、
、
、
这些会自动传给子元素;而
、
、
、
、
、
等则完全不继承。
一个快速验证方法:在父元素上设
,再在子元素里不写
,看文字是否变红——如果变了,说明它继承了;如果没变(比如保持
浏览器
默认黑),那它就不继承。
inherit 关键字能强制继承任何属性吗?
可以,但得手动写。比如父容器有
,子元素默认不会拿到这个边框,但你可以显式写
,它就会取父元素计算后的值(注意不是声明值,是最终生效值)。
适用于所有属性,包括本不继承的
它继承的是父元素「计算后」的值,比如父元素
,子元素用
,拿到的是实际像素值,不是表达式
慎用于
或
,因为父元素若为
或
,继承后可能破坏布局
为什么子元素没继承 font-size 却看起来一样?
这是常见误解。
确实继承,但它的相对单位(如
、
)会在每一层重新计算。父元素设
,子元素写
,得到的是
;但如果子元素只写
,才是严格继承 16px。
立即学习
“
前端免费学习笔记(深入)
”;
Comet AI 浏览器
下载 Comet AI 浏览器,体验由 Perplexity AI 驱动的革命性上网方式。内置 AI 助手可实时总结网页、跨标签页对比信息、自动执行任务。告别繁琐操作,让 AI 成为你的浏览副驾,大幅提升研究与工作效率。支持 Windows、macOS、Android 和 iOS。
下载
更隐蔽的情况是:父元素用了
,而根元素(
)的
被 JS 动态改过,此时子元素即使没写
,也会跟着变——这不是继承出问题,而是
的
计算机
制导致的。
inherit / unset / initial 容易混淆的点
这三个关键字行为差异明显,用错会导致样式意外重置:
:取父元素该属性的计算值
:对可继承属性等价于
,对不可继承属性等价于
:总是取该属性的规范初始值,比如
是
,
是
例如,想让某个按钮恢复默认文字颜色,写
比
更安全——尤其当它嵌套在深色主题容器里时,后者会继承深色而非还原成黑色。
继承不是万能的简化手段,关键在理解“谁传谁”和“怎么传”。最常被忽略的是:继承值不等于声明值,也不等于视觉表现值;调试时别只看 DevTools 里写的那行 CSS,得点开 computed 面板看实际生效值。
colorfont-familyfont-sizeline-heighttext-alignvisibilitywidthheightmarginpaddingborderbackgroundcolor: redcolorborder: 2px solid #333border: inheritinheritfont-size: 1.2emfont-size: inheritmarginpadding0autofont-sizeemremfont-size: 16pxfont-size: 1.2em19.2pxfont-size: inheritrem:rootfont-sizefont-sizereminheritunsetinheritinitialinitialcolor: initialblackdisplay: initialinlinecolor: initialcolor: inherit