CSS继承机制中,哪些选择器下的属性能被其他元素继承?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1088个文字,预计阅读时间需要5分钟。
CSS属性并非都会向子元素递归传递,只有明确被定义为可继承的属性才会。例如:
关键判断依据是 MDN 或 CSS 规范里每个属性的「Initial value」下方是否写着 Inherited: yes。别凭感觉猜——很多看似“文字相关”的属性其实不继承,比如 text-align(它只影响块级容器内的行盒对齐,不是子元素继承来的)。
-
font-size继承,但计算值基于父元素的字体大小(可能触发相对单位链式计算) -
visibility继承,hidden会让子元素也隐藏,但子元素设visibility: visible可以覆盖 -
cursor继承,但pointer-events: none会切断鼠标行为,和继承无关
inherit 关键字不是“强制继承”,而是“显式取父值”
inherit 是一个特殊关键字,作用是让当前声明的属性值等于其父元素**计算后的值**,而不是“开启继承开关”。它在任何属性上都能用,哪怕该属性本来就不继承。
常见误用场景:有人以为给 div 设 border: inherit 就能让它继承父 div 的边框——实际不会,因为 border 本就不继承,而父元素的 border 计算值通常是 none,所以结果还是没边框。
本文共计1088个文字,预计阅读时间需要5分钟。
CSS属性并非都会向子元素递归传递,只有明确被定义为可继承的属性才会。例如:
关键判断依据是 MDN 或 CSS 规范里每个属性的「Initial value」下方是否写着 Inherited: yes。别凭感觉猜——很多看似“文字相关”的属性其实不继承,比如 text-align(它只影响块级容器内的行盒对齐,不是子元素继承来的)。
-
font-size继承,但计算值基于父元素的字体大小(可能触发相对单位链式计算) -
visibility继承,hidden会让子元素也隐藏,但子元素设visibility: visible可以覆盖 -
cursor继承,但pointer-events: none会切断鼠标行为,和继承无关
inherit 关键字不是“强制继承”,而是“显式取父值”
inherit 是一个特殊关键字,作用是让当前声明的属性值等于其父元素**计算后的值**,而不是“开启继承开关”。它在任何属性上都能用,哪怕该属性本来就不继承。
常见误用场景:有人以为给 div 设 border: inherit 就能让它继承父 div 的边框——实际不会,因为 border 本就不继承,而父元素的 border 计算值通常是 none,所以结果还是没边框。

