悬停后如何继续CSS动画?

Posted

技术标签:

【中文标题】悬停后如何继续CSS动画?【英文标题】:How to continue CSS animation after hover out? 【发布时间】:2016-03-09 10:40:52 【问题描述】:

我制作了一个带有动画 img 的按钮。因此,当您将鼠标悬停在上面时,汽车会从左侧行驶并停在中间。当您悬停时-汽车向右行驶。 我做了一个小提琴: https://jsfiddle.net/ufwyjd0o/

.button
  height:150px;
  width: 150px;
  background-color:#468189;
  margin: 100px;
  border-radius: 100%;
  box-shadow: 0px 3px 8px 0px rgba(0,0,0,0.6);
  animation: size 1.5s infinite alternate;
  position: relative;


@keyframes size 
    0%   transform: scale(1.0);
          box-shadow: 0px 3px 8px 0px rgba(0,0,0,0.6); 
    100% transform: scale(1.05);
          box-shadow: 0px 8px 8px 0px rgba(0,0,0,0.4); 


.icon img
  height:75px;
  width:auto;
  position: absolute;
  top: 40px;
  animation: driveout 1s cubic-bezier(.52,.02,.31,.99) both;
  transform: 1s;


@keyframes drive 
    0%   transform: translate3d(-60px,0,0)
    5%  transform: translate3d(60px,0,0)  
    10% transform: translate3d(40px,0,0);


@keyframes driveout 
    0%   transform: translate3d(40px,0,0) 
    100% transform: translate3d(200px,0,0)


.button:hover .icon img 
  animation: drive 10s  cubic-bezier(.52,.02,.31,.99) normal;
  animation-play-state: pause;
  display:block;

【问题讨论】:

问题是?你想让汽车的运动成为一个无限循环吗?还是在悬停时慢慢将其移回原始位置?不是很清楚。 我希望动画在悬停后继续,并且汽车向右移动。当你快速进出时,汽车会闪烁,我需要一切顺利 你应该看看这个 - ***.com/questions/31806649/…。一旦选择器不再适用,动画将不会进一步执行。它会突然停止并回到原来的位置。在您的情况下,一旦您立即将鼠标悬停,在默认状态下指定的动画 (driveout) 将立即开始执行。这就是您看到闪烁的原因。 谢谢。我知道在悬停后返回的过渡。但是我需要动画在悬停时开始播放(汽车开始向右行驶),当汽车停在中间时暂停,当你悬停时,动画继续并且汽车向右行驶。如果您在汽车停止前悬停,汽车必须向右行驶而不会停止和闪烁。也许我们走一些 js 方式? @Harry 是的,需要脚本,我的问题是根据 OP 的需要了解如何完成该脚本。 【参考方案1】:

如果您希望在 hoveron 和 hoverout 上使用不同的动画(与 javascript 中的 mouseover 和 mouseout 相同),那么您最好的选择就是这样。

.button 
 // what you want to happen on hoverout
 animation: // your hoverout animation


.button:hover 
 // what you want to happen on hoverover
 animation: // your hoverover animation.

【讨论】:

如果您查看代码,OP 已经有了这个(两个不同的动画悬停进出),但他们正在寻找的是即使您进入并持续到结束状态的动画快出来。这对那里没有帮助。

以上是关于悬停后如何继续CSS动画?的主要内容,如果未能解决你的问题,请参考以下文章

悬停时继续 CSS3 关键帧动画/悬停时停止重复

如何禁用过渡或动画时间的悬停效果,然后在过渡或动画在 css 中完成后启用它?

CSS悬停在初始动画后不起作用

CSS @keyframes 光标动画在悬停时闪烁

我想让一个词在鼠标悬停期间执行 CSS 动画后消失

css3:动画后悬停不起作用