在CSS动画完成对元素运行后,应该在伪状态(如:hover
)上指定的样式更改是否应该工作?应该:在CSS动画完成后悬停伪状态样式更改工作
编辑:也许更有针对性,我应该问:为什么在动画上应用“转发”会阻止重写更具体的样式更改?
编辑2:原来,这实际上是一个跨浏览器问题。例如。 Chrome浏览器(我正在运行版本38.0.2125.111)的行为不正确,但Firefox按照规范处理它。
长话短说:根据规格(如下面chrona引用)添加!important
覆盖应呈现样式。但是,目前只有Firefox正确处理这个问题。
这里是还原:
@keyframes go {
0% {
background: green;
}
100% {
background: pink;
}
}
@-webkit-keyframes go {
0% {
background: green;
}
100% {
background: pink;
}
}
.box {
animation: go 3s forwards;
-webkit-animation: go 3s forwards;
}
.box:hover {
background: orange!important;
cursor: pointer;
}
<div class="box">Hover states don't work after animation</div>
我无法找到在规范有关信息,没有之一:http://www.w3.org/TR/css3-animations/
任何人都知道,如果a)本应有可能吗? b)一旦动画结束,如何让悬浮状态在元素上工作?
是的,无力的:hover覆盖由前设置的值是对我最好奇的部分。 – 2014-11-06 12:04:55
为了防止有人可以挖掘出任何官员为什么'forward'值通过'hover'工作阻止更改,我会暂时将标记作为答案。 – 2014-11-06 12:06:56
另外:您修改过的代码段在Firefox上的行为与问题中的行为略有不同。背景颜色悬停效果在问题版本的动画中起作用,但直到动画在此版本中结束。 _EDIT:_这是通过在chrona的答案中引用来解决的,它是如何工作的 – Izkata 2014-11-06 15:33:07