有四个关键字是任何 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;
。
我很高兴他发现了我对这一切的抱怨
Chris Coyier 认为 我们需要一个新的值,他称之为
default
。它在所有情况下都还原到浏览器样式表,即使对于可继承的属性也是如此。因此,它是一个更强大的版本revert
。我同意。这个关键字将真正有用。
阿门。我们有四个属性可以用来调整单个属性上的级联,但没有一个属性可以让我们将所有内容都重置回 UA 样式表默认值。如果我们有了它,我们就会拥有一个非常强大的工具,可以从任何给定元素的样式开始。从某种意义上说:作用域样式!
PPK 认为还有一个第五个值很有用:cascade
。这个想法(我认为)是它有点像 currentColor
,但适用于任何属性。有点像一个不需要定义的自由变量,它允许你访问级联值原本会是什么,除了你将在另一个上下文中使用它(比如计算)。
抱歉,但“initial”不是真正的“default”吗?它可以实现这一点,不是吗?
不是。
我想将这些段落重置回 UA 默认值(block),而不是 initial(inline)。
unset
似乎与完全没有设置属性相同(因此它的名称,它没有设置)。我的猜测是它唯一的用途是允许不设置属性,即使出于某种原因您被迫设置一个值(例如,您正在使用某些工具,无论如何它都会尝试设置它)。我今天一直在抱怨缺少
cascade
值,我知道以前也抱怨过很多次。这将是美妙的。今天我正在使用 box-Shadow 创建一个脉冲动画。我真正想做的是追加新的脉冲 box Shadow 到元素上现有的任何 box Shadow。
我通过为我的 SASS mixin 添加了一个新的传入变量来解决这个问题,但它仍然需要手动定义。
cascade
将完全解决这个问题。有时我需要“撤销”级联中某些属性的最新设置,尤其是在使用第三方设计系统时,我想“撤销”在特定级联中对属性进行的某些设置。在这种情况下,我不一定想中断父级的值,也不想将其设置为规范或浏览器默认值,我只想撤销在最具体级联(或者可能在级联中后退几步)中设置的值。这样的值会很麻烦,并且高度依赖于级联,所以我怀疑它是否会被实现,但我确实不止一次需要这样的东西。另一种方法是创建一个规则来覆盖设计系统对该值的设置,并将其设置为级联中更高处的“先前”值,我必须通过手动检查级联来确定。
实验性的“revert-layer”将使我们能够正确地重置所做的样式更改:https://mdn.org.cn/en-US/docs/Web/CSS/revert-layer