我想有一个侧边栏,当鼠标悬停在它上面时,通过改变渐变的背景位置来改变颜色,但我也想在鼠标离开悬停后反转动画。但我目前代码的问题是,当我删除悬停时,它从结束到开始做动画,而不是从它在当前位置的地方到我想让它去的地方。下面是动画的代码片段:
.side-nav{
background: linear-gradient(#00bcd4, #e91e63, #3f51b5, #00bcd4);
background-size: 100% 500%;
background-position: 0 40%;
animation: out 2s linear reverse;
}
@keyframes out {
from{background-position: 0 400%;}
to{background-position: 0 40%;}
}
.side-nav:hover{
animation: backcolor 20s linear infinite reverse;
}
@keyframes backcolor {
from{background-position: 0 40%;}
to{background-position: 0 400%;}
}
例如,如果我将鼠标悬停在侧菜单上并开始播放动画,但在动画完成之前移除鼠标,我希望动画从到达的位置开始反转。
1条答案
按热度按时间ru9i0ody1#
要达到预期效果,需要使用animation-play-state属性。当鼠标离开悬停位置时,应该暂停当前动画,并从当前位置开始反向播放一个新动画。下面是一个更新后的代码片段,应该可以正常工作:
通过设置动画填充模式:前进,则元素在动画结束时将停留在动画的最终位置,而不是恢复到初始状态。
通过设置动画播放状态:最初暂停,动画被暂停直到悬停事件触发。
最后,通过设置animation-play-state:在悬停时运行,将恢复暂停的动画,动画将从当前位置反向播放。