JS / jQuery - 在悬停时只播放一次GIF

时间:2015-10-17 00:53:31

标签: javascript jquery html animation gif

最近我们为我们的网站制作了一些GIF动画。其中一个动画是地图上的一个标记,它可以跳过'在空中。我们的想法是让标记只在鼠标上跳一次。换句话说:它只能播放一次而不会在悬停时进入无限循环。

我开始阅读这篇文章:Animating a gif on hover。我使用代码在悬停时启动动画,并在鼠标移出时用静态图像替换它。

但这并没有让我接近我想要的东西。有了这个脚本,它就会继续循环播放,这是逻辑,但正是我们不想要的。此外,当你鼠标移出时,我们希望GIF继续动画直到完成,而不是立即停止。最后但并非最不重要的一点:当你悬停时,将鼠标移出然后在动画仍在进行时立即再次悬停,它仍然不会在它仍在播放时重新启动。

正如我现在所理解的,以及当我们创建动画时我没有意识到,使用jQuery控制GIF动画非常困难。

我唯一能想到的是处理动画的时间/持续时间。例如。如果动画需要3秒钟,那么我们可以用GIF替换静态图像(在悬停时)完全相同的时间。如果我们在img标签的数据属性中传递持续时间,我们甚至可以为所有GIF编写通用脚本。但这意味着要编写大量代码,对我来说这似乎不是最简单的方法。

有没有人想到一种更简单的方法来实现我们想要的东西?我很期待听到你对这个问题的看法。

1 个答案:

答案 0 :(得分:4)

创建gif图像时,可以创建它,使其仅循环一次。

因此,要解决此问题,请先加载文件的静态版本。当您将图像悬停在图像上时,将其更改为gif图像并保持这种状态,这样它就可以完成一次性动画。

我不会使用任何时间。确切的时间很难预测,因为有些计算机速度较慢,也应考虑加载时间。

所以,解决方案:

  • 制作一个只循环一次的gif图像(如果你有合适的工具,这是一个可以在图像中设置的属性)。
  • 最初显示图像的静态版本。
  • 在鼠标悬停时,向该元素添加一个类,因此应用不同的样式,将其更改为其他图像,或者如果您使用src元素,则更改img属性。
  • 保持原状。不要删除课程。
  • Preload the image,所以当你将src从静态图像切换到动画gif时没有延迟。