对于我正在开发的 CSS 框架,我正在使用all: unset
,它本身工作得很好:
#foo { all: unset; }
但是,在某些情况下,我想“撤消”此规则的效果,如
#foo:hover { all: auto; }
然而,这显然行不通,因为没有值auto
for all
。相反,我们有价值观inherit
and initial
,而不是“取消”all
属性,具有不同的效果:将所有值恢复为其父级的值或其初始值(我认为这意味着系统级默认值)。
为了实现我想要的,我现在正在做的事情
#foo:not(:hover) { all: unset; }
例如,如果我想对多个伪类执行此操作,并且我更愿意覆盖all: unset
财产?有什么办法可以做到吗?
似乎无法消除其影响all
属性一旦被指定。这可能是由于all
是一个简写属性(恰好只接受 CSS 范围的关键字作为值)。
您不能像 css-cascade-4 引入的那样从级联中删除简写声明revert
关键字允许您删除作者级别的声明,这是因为速记属性在级联中不作为其自己的实体存在;相反,它仅代表其所有组件属性。就像更传统的简写属性一样,例如background
and font
,覆盖已应用的简写声明的唯一方法是通过普通声明或另一个简写声明重新指定被覆盖的普通写法的值。但你不能用后者来做all
属性,因为它只接受 CSS 范围的关键字。
由于前者显然不切合实际all
简而言之,由于您无法预测哪些作者级别的声明会被覆盖,所以您唯一的其他选择是通过选择器限制它,从而从一开始就防止它在特定情况下应用。希望我们能看到更多级别 4 的实现:not()
在不久的将来,这将使编写选择器变得更加容易。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)