我将div的显示属性设置为in
line-block
。然后,我创建了四个类:
inherit
inherit
的变量none
的变量inherit
的变量,默认设置为grid
每个类使用的实际样式似乎并不正确,
block
inherit
的值,并显示为inline-block
none
并被隐藏inherit
值,而是将显示设置为默认值对于每个这些类,我为color属性添加了变量和默认值,它们均按预期工作。变量是否应该忽略inherit
和unset
的值?
: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>
答案 0 :(得分:3)
在这种情况下,inherit
用作自定义属性的值,并且不会使用inherit
评估为var()
的值。
以下是了解此问题的基本示例:
.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
用于自定义属性,而不考虑将使用var()
评估自定义属性的属性。您将找不到计算值等于继承的自定义属性,但计算值等于继承的值的自定义属性。
自定义属性是普通属性,因此可以在任何元素上声明它们,并使用常规继承和级联规则进行解析