“在你还没设置之前,我们就已经有值了。”
一些CSS属性值会继承上一级的属性——如果你没有给他设置值的话。
继承流(Inheritance flow)
<html>
标签是文档流中的第一个标签,所以他不会从哪里进行继承,添加一些属性在该标签中,会使其继承到很远下去…
但在中间,比如<body>
标签设置了一个X属性,就会中断从<html>
中流下来的 X 属性。
可继承的属性
尽管,可继承的属性有很多,但并不是全部。以下是完整列表:
- azimuth
- border-collapse
- border-spacing
- caption-side
- color
- cursor
- direction
- empty-cells
- font-family
- font-size
- font-style
- font-variant
- font-weight
- font
- letter-spacing
- line-height
- list-style-image
- list-style-position
- list-style-type
- list-style
- orphans
- quotes
- text-align
- text-indent
- text-transform
- visibility
- white-space
- widows
- word-spacing
仅是参考,绝非让你全部背下来——这绝对不是一件有效率的事情
当然,常用的——比如加粗了的印象要稍微深刻一些最好。
如何更好的控制继承
inherite 关键字
你可以将属性值设置为inherite
使其继承父级的值。比如控制一个组件下的字体风格都一致——尽管可能在组件外部有另一个字体,你也只需要选择该组件并且设置字体风格,并将其下的元素字体风格属性值都设置为inherite
.component{
font-style: oblique;
}
.component p {
font-style: inherit;
}
initial 关键字
继承可能会带来一些令人摸不着头脑的情况,而initial
提供了重置的选项——让其回到最初的起点…恢复该元素中的该属性的默认值。
unset 关键字
unset
是一种分类讨论,如果该属性可继承,那么就等于设置为了inherite
;如果该属性不可继承,那么就等于设置为initial
。
记住所有可继承的属性太难了,也十分不值得花时间。unset
属性也许就能帮忙解决这个问题🤔
.inside p{
all: unset;
}
将某组件内部所有属性都重置,这样就不会受到外面属性的影响。