我正在编写一个样式表来扩展一个基本样式表,其CSS有许多伪类应用于某些元素。我希望我的样式表能够覆盖其中一些样式,这些样式应用于一个元素,无论它处于什么状态,是否悬停,聚焦等。
例如,基本样式表可能具有样式
.classname {
color:#f00;
}
.classname:hover {
color:#0f0;
}
.classname:active {
color:#00f;
}
但在这些样式之后添加以下内容不会覆盖伪状态...
.classname {
color:#fff;
}
以下是有效的,但感觉很多代码看起来很简单。
.classname,
.classname:active,
.classname:hover,
.classname:focus,
.classname:visited,
.classname:valid{
color:#fff;
}
同样,我知道!important
会起作用,但这通常是一个结构不合理的样式表的警示标志。
是否有.classname:*
的任何内容可以覆盖所有可能的状态,或者某种方式来简单地删除所有伪类?
答案 0 :(得分:4)
如果您能够将类放在某个包装器where
中,则可以防止伪类因特异性而生效:
id
body {
background: black;
}
.classname {
color:#f00;
}
.classname:hover {
color:#0f0;
}
.classname:active {
color:#00f;
}
#a .classname {
color:#fff;
}
答案 1 :(得分:4)
我认为,它可以用:any
伪类来解决。
<a href="google.com">Google</a>
<style>
a:link { color: blue; }
a:hover { color: red; }
a:-webkit-any(a) { color: green; }
</style>
浏览器支持并不完美:https://developer.mozilla.org/en/docs/Web/CSS/:any
修改强>
实际上,正如我发现的那样,这个答案并不十分准确。 (尽管它被投票了4次,哈哈)。
首先,您不需要:any
来完成此任务。您需要:any-link
。
第二点是:any
本身的前身是:matches
。因此,在我们的术语中,我们应该使用术语:any-link
和:matches
,而不要使用术语:any
。
使用:any-link
:https://developer.mozilla.org/en-US/docs/Web/CSS/:any-link
使用:mathes
:https://css-tricks.com/almanac/selectors/m/matches/
我没有编辑代码本身,所以请根据这些新信息自行修复。