我将div的display属性设置为in line-block
,然后创建了四个类:
- 无变量,将显示设置为
inherit
- var,它将display设置为变量集
inherit
- var-none,用于将显示设置为变量集
none
- var-default,将显示设置为变量集
inherit
和默认值grid
但是,每个类使用的实际样式似乎并不正确:
- no-var类正确地将显示继承到
block
- var类不从变量获取
inherit
值,而是显示为inline-block
- var-none类正确地将display设置为
none
,并且处于隐藏状态 - var-default类不从变量获取
inherit
值,并将display设置为缺省值
对于每个类,我都为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>
2条答案
按热度按时间3pmvbmvn1#
在这种情况下,
inherit
用作自定义特性的值,并且不会使用var()
计算为inherit
值。下面是一个基本的例子来理解这个问题:
注意在第二种情况下,我们使用蓝色,因为自定义属性从顶部div继承了这个值,然后它被赋值为那个值。在第一种情况下,我们使用默认颜色,因为没有东西可以继承。
换句话说,
inherit
将被视为自定义属性,而不是您将使用var()
计算自定义属性的属性。您将找不到计算值等于的自定义属性来继承,但计算值等于的自定义属性将继承值。根据质量标准:
自定义属性是普通属性,因此它们可以在任何元素上声明,使用正常继承和级联规则解析
voj3qocg2#
有时您需要使用“上下文感知”的属性值,例如
auto
、100%
或1em
。例如,现在(这是针对Angular 材质样式的,所以我不能控制所有CSS),我需要设置一个对应于
font-size
的变量,以防止使用默认的var()值。因此,在
font-size
的上下文中:100%
或1em
实际上意味着与inherit
相同。所以材质样式(我不能改变)可能如下所示(我想防止使用默认的18px):
正如Temani所说我不能这么做
相反,我可以使用行为类似于“inherit”的自定义属性值,但这只是因为我使用的是
font-size
。所以
font-size: 100%
代替18px被应用,并且实际上什么也不做,继承我先前在父对象中设置的字体大小。另一个示例可能是
--color: currentColor
,表示属性为color
。