inherit、initial、unset、revert

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。立即开始使用 200 美元的免费积分!

有四个关键字是任何 CSS 属性的有效值(请参阅标题)。在日常使用中,我会说我看到 inherit 使用得最多。也许是因为它存在的时间最长(我想?)但也是因为它在逻辑上是有意义的(“请从设置它的下一个父级继承你的值”)。例如,您可能会在链接颜色被覆盖时看到这一点。

<footer>
  ©2012 Website — <a href="/contact">Contact</a>
</footer>
/* General site styles */
a {
  color: blue;
}

footer {
  color: white;
}
footer a {
  color: inherit;
}

这是一种合理而优雅的方法,可以处理您希望页脚中的文本和链接具有相同的颜色,而无需设置两次的情况。

其他属性则表现不同……

  • initial 会将属性重置回规范默认值。
  • unset 很奇怪。对于可继承的属性(例如 color),它表示 inherit,而对于不可继承的属性(例如 float),它表示 initial。这对我来说很令人费解,以至于我从未使用过它。
  • revert 也类似地很奇怪。对于可继承的属性,它表示 inherit。但对于不可继承的属性,它表示还原到 UA 样式表。这在某种程度上是有用的,例如,还原 display 不会使 <p> 元素 display: inline;,但它将保留为合理的 display: block;

PPK 详细介绍了所有这些内容。

我很高兴他发现了我对这一切的抱怨

Chris Coyier 认为 我们需要一个新的值,他称之为 default。它在所有情况下都还原到浏览器样式表,即使对于可继承的属性也是如此。因此,它是一个更强大的版本 revert。我同意。这个关键字将真正有用。

阿门。我们有四个属性可以用来调整单个属性上的级联,但没有一个属性可以让我们将所有内容都重置回 UA 样式表默认值。如果我们有了它,我们就会拥有一个非常强大的工具,可以从任何给定元素的样式开始。从某种意义上说:作用域样式!

PPK 认为还有一个第五个值很有用:cascade。这个想法(我认为)是它有点像 currentColor,但适用于任何属性。有点像一个不需要定义的自由变量,它允许你访问级联值原本会是什么,除了你将在另一个上下文中使用它(比如计算)。