对照结果:文字与边框不同
两个 p 未设置自己的颜色,因此继承青绿色。
border 默认不继承,边框只围住 section。
下面只给 section 设置样式,没有给 p 单独设置。运行后,观察两段文字、边框和背景的显示效果。
<style>
section {
color: teal;
border: 2px solid navy;
background-color: #fff0dc;
}
</style>
<section>
<p>唱腔赏析</p>
<p>服饰与舞台</p>
</section>
继承是子元素从父元素取得属性值,并非所有属性都默认继承。
<style>
section {
color: teal;
border: 2px solid navy;
background-color: #fff0dc;
}
</style>
<section>
<p>唱腔赏析</p>
<p>服饰与舞台</p>
</section>
两个 p 未设置自己的颜色,因此继承青绿色。
border 默认不继承,边框只围住 section。
本例 p 背景透明,看到的是 section 的浅橙色背景,而非继承的背景色。
color:文字颜色。
font-family、font-size、font-weight:字体、字号、字重。
line-height、text-align:行高、文字对齐方式。
margin、padding:外边距、内边距。
border、width、height:边框、宽度、高度。
background-color:背景颜色。
“默认继承”不是父元素强制覆盖子元素。本例若添加下面的规则,两个段落就使用自己的深红色,不再采用继承的青绿色;section 的颜色仍为 teal。这不是 p 与 section 两个选择器在比较特异性,而是 p 已有自己的颜色声明。
p {
color: crimson;
}
把上面的 crimson 改为 inherit,就明确要求采用父元素的颜色。即使某属性默认不继承,也可以显式要求继承,例如下面的规则会给每个段落加上与父元素相同的边框:
p {
border: inherit;
}
“文字属性常继承”只是记忆提示,并非所有文字相关属性都继承;默认是否继承取决于具体属性的规定。浏览器默认样式也可能直接为子元素设置某些属性。