为什么显示 属性 设置为继承 CSS 变量不起作用?

Why display property set to inherit with CSS variable doesn't work?

我将 div 的显示 属性 设置为 in line-block。然后我创建了四个 classes:

每个 class 使用的实际样式似乎不正确,但是:

对于这些 class 中的每一个,我都为颜色 属性 添加了变量和默认值,它们都按预期工作。变量是否应该忽略 inheritunset 值?

:root {
  --display: inherit;
  --display-none: none;
  --color: red;
}
div  {
  display: inline-block;
  color: green;
}
.no-var {
  display: inherit;
  color: red;
}
.var {
  display: var(--display);
  color: var(--color);
}
.var-none {
  display: var(--display-none);
}
.var-default {
  display: var(--display, grid);
  color: var(--color, purple);
}
<div class="no-var">
  No variable
</div>
<div class="no-var">
  No variable
</div>
<div class="var">
  Variable
</div>
<div class="var">
  Variable
</div>
<div class="var-none">
  None
</div>
<div class="var-none">
  None
</div>
<div class="var-default">
  Default
</div>
<div class="var-default">
  Default
</div>

在这种情况下,inherit 用作自定义 属性 的值,不会使用 var().[=20 计算为 inherit 值=]

这里有一个基本的例子来理解这个问题:

.box {
  --c:inherit;
  color:var(--c,red);
}
<div>
  <div class="box">I am a text</div>
</div>
<div style="--c:blue">
  <div class="box">I am a text</div>
</div>

请注意,在第二种情况下,我们是如何使用蓝色的,因为自定义 属性 从顶部 div 继承了这个值,然后它被评估为该值。在第一种情况下,我们将使用默认颜色,因为没有任何东西可以继承。

换句话说,inherit 将被视为自定义 属性 而不是 属性,您将使用 [=14= 评估自定义 属性 ].您不会找到计算值等于 继承 但计算值等于 继承值 的自定义 属性。 =20=]


来自the specification

Custom properties are ordinary properties, so they can be declared on any element, are resolved with the normal inheritance and cascade rules