继承说白了就一句话,子元素会默认继承父元素的某些 CSS 属性。
css
p {
font-size: 30px;
}html
<p id="test" class="q">
<a href="">test</a>
</p>在上例中,我将 p 元素的字体修改为 30 px,但 p 元素的子元素,即 a 元素的字体大小也被设置成了 30 px,这就是由于 a 元素的字体大小继承了其父元素,这就是继承。
继承的本质是一个默认属性值的问题,如果一个属性的默认值为 initial,那么这个属性就是继承属性,否则就是非继承属性,比如 a 元素 font-size 属性的默认值为 inherit,所以这个 a 元素的 font-size 属性是继承属性,a 元素的 border 属性就不是继承属性,默认应该是 none,所以其就是非继承属性。或者说,只要某个属性的值默认被设置成了 inherit,那么这个属性的值就会继承父元素,可以参考 inherit - CSS:层叠样式表 | MDN
通常来说,和文字内容相关的属性默认值均为 inherit。
MDN 中说到,任何属性都可以设置为 inherit 值,这个说法是没问题的,哪怕是非继承属性,它也只是默认值不为 inherit,我们还是可以自行将其值设为 inherit 来让它强制继承父元素,如果使用 inherit 强制继承,则会强制使用父元素的 计算属性。
初始值
如果我将某个元素的属性重置为初始值,则使用 initial 即可,比如 color:initial; 就将 color 属性设置为了初始值。注意,这个初始值并不是浏览器默认样式表中的值,而是 CSS 标准中的默认值,这二者的区别参考 6.属性值的计算过程。
继承属性和非继承属性的区别在于默认值是否是
inherit,而非是否可以被继承,这一点在 MDN 文档里说的很清楚 继承 - CSS:层叠样式表 | MDN