CSS 属性继承
在 css 中,每个 CSS 属性定义的概述都指出了这个属性是默认继承的 ("Inherited: Yes") 还是默认不继承的 ("Inherited: no")。这决定了当你没有为元素的属性指定值时该如何计算值。
继承属性:当元素的一个继承属性(inherited property)没有指定值时,则取父元素的同属性的计算值 (computed value) 。只有文档根元素取该属性的概述中给定的初始值 (initial value)(这里的意思应该是在该属性本身的定义中的默认值)。
<div class="container">
<p>Some text</p>
</div>
假设 container 类有一个设置了 color 属性的 CSS 样式:
.container {
color: green;
}
这意味着,<p> 元素会从 container 类继承 color 属性,因此,<p> 元素上的文本会以 green 颜色显示。
CSS 的某些属性具有继承性 (Inherited):
- 如果一个属性具备继承性,那么在该元素上设置后,它的后代元素都可以继承这个属性;
- 当然,如果后代元素自己有设置该属性,那么优先使用后代元素自己的属性 (不管继承过来的属性权重多高);
如何知道一个属性是否具有继承性呢?
- 常见的
font-size/font-family/font-weight/line-height/color/text-align都具有继承性; - 这些不用刻意去记,用的多自然就记住了;
- 常见的
可以强制继承
item : inherit另外要多学会查阅文档,文档中每个属性都有标明其继承性的:(MDN 文档中的
Formal Definition/规范标题中的Inherited字段)
- HTML
- CSS
<div class="css-inheritance-demo">
<div class="container">
<p class="text">Some text</p>
</div>
</div>
.css-inheritance-demo .container {
background-color: gold;
color: #007;
font-size: 1.5em;
}
.css-inheritance-demo p.text {
font-size: 1.5em;
}
http://localhost:3000/css-inheritance.html
Some text
tip
继承过来的是计算值(使用父元素计算出的值),而不是设置值(静态设置的值)。
例如:
- 如果父元素
<div>的font-size是1.5em,子元素<p>的font-size是1.5em。 - 那么子元素
<p>的font-size就是36px(16 x 1.5 x 1.5),而不是1.5em(16 x 1.5)。