鼠标离开时悬停和反向的跨浏览器动画 gif

Cross-Browser animated gif on hover & reverse when mouse leaves

本文关键字:浏览器 动画 gif 离开 悬停 鼠标      更新时间:2023-09-26

我有以下图片:

静态图像 |启动动画 |片尾动画

我正在使用以下代码(jsfiddle 示例):

$(function() {
    $("#link-gif").hover(
        function() {
            /* starting animation */
            $(this).css("background-image", "url('https://i.stack.imgur.com/14qMg.gif')");
        },
        function() {
            /* ending animation */
            $(this).css("background-image", "url('https://i.stack.imgur.com/npwJ0.gif')");
        }                         
    );                  
});
#link-gif {
   width:150px;
   height:40px;
   border:1px solid #39464E;
   background-image:url('https://i.stack.imgur.com/W4Kgi.png'); /*static*/
   background-size:contain;
   background-repeat:no-repeat;
   background-position:bottom center;
   cursor:pointer;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="link">
  <div id="link-gif">&nbsp;</div>
</div>

总而言之,我想要发生的是:我首先加载静态图像。当有人将鼠标悬停在#link-gif上时,开始动画 gif 开始,当您将鼠标悬停在它之外时,结束动画开始。

出于某种原因,当您将鼠标悬停在图像上时,图像不会动画化。它只是走到 gif 的末尾。有谁知道为什么会这样?

发生这种情况是因为图像被缓存。尝试在 gif 的末尾添加一些动态值,例如时间。检查我在您的代码中所做的修改。我在 img 路径中添加了当前时间。

$(function() {
    $("#link-gif").hover(
        function() {
            /* starting animation */
            var url = "url('http://i.imgur.com/HhsBws5.gif?time=" + new Date().getTime() + "')";
            $(this).css("background-image", url);
        },
        function() {
            /* ending animation */
            var url = "url('http://i.imgur.com/WLFzz3S.gif?time=" + new Date().getTime() + "')";
console.log(url);
            $(this).css("background-image", url );
        }                         
    );                  
});
#link-gif {
   width:150px;
   height:40px;
   border:1px solid #39464E;
   background-image:url('http://i.imgur.com/YgLJoVH.png'); /*static*/
   background-size:contain;
   background-repeat:no-repeat;
   background-position:bottom center;
   cursor:pointer;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="link">
  <div id="link-gif">&nbsp;</div>
</div>