“在你还没设置之前,我们就已经有值了。”

一些CSS属性值会继承上一级的属性——如果你没有给他设置值的话。

继承流(Inheritance flow)

<html>标签是文档流中的第一个标签,所以他不会从哪里进行继承,添加一些属性在该标签中,会使其继承到很远下去…
但在中间,比如<body>标签设置了一个X属性,就会中断<html>中流下来的 X 属性。

可继承的属性

尽管,可继承的属性有很多,但并不是全部。以下是完整列表:

仅是参考,绝非让你全部背下来——这绝对不是一件有效率的事情
当然,常用的——比如加粗了的印象要稍微深刻一些最好。

如何更好的控制继承

inherite 关键字

你可以将属性值设置为inherite使其继承父级的值。比如控制一个组件下的字体风格都一致——尽管可能在组件外部有另一个字体,你也只需要选择该组件并且设置字体风格,并将其下的元素字体风格属性值都设置为inherite

  1. .component{
  2. font-style: oblique;
  3. }
  4. .component p {
  5. font-style: inherit;
  6. }

现在该组件下的p段落就都是斜体字了。

initial 关键字

继承可能会带来一些令人摸不着头脑的情况,而initial提供了重置的选项——让其回到最初的起点…恢复该元素中的该属性的默认值。

unset 关键字

unset是一种分类讨论,如果该属性可继承,那么就等于设置为了inherite;如果该属性不可继承,那么就等于设置为initial
记住所有可继承的属性太难了,也十分不值得花时间。unset属性也许就能帮忙解决这个问题🤔

  1. .inside p{
  2. all: unset;
  3. }

将某组件内部所有属性都重置,这样就不会受到外面属性的影响。