首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >重新启动动画GIF作为背景图像

重新启动动画GIF作为背景图像
EN

Stack Overflow用户
提问于 2011-09-27 20:08:34
回答 5查看 31.1K关注 0票数 21

可以重新启动用作background-image的动画GIF吗?

考虑一下这个HTML:

代码语言:javascript
复制
<div id="face">
    <div id="eyes"></eyes>
</div>

还有这个风格:

代码语言:javascript
复制
#eyes.blink {
    background-image:url('blink.gif');
}

我希望每次将类blink添加到#eyes时都会播放blink.gif动画,而不仅仅是第一次。

我原以为这能行得通:

代码语言:javascript
复制
function startBlink() {
    $('#eyes').addClass('blink');
}

function stopBlink() {
    $('#eyes').removeClass('blink');
}

问题是,火狐和WebKit浏览器在播放过一次背景图像GIF动画后,都不会再播放一次。添加/删除类闪烁只在第一次起作用。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-10-06 09:32:25

您可以通过重新加载动画gif来重放它。这对于带宽来说并不理想,特别是当图像很大时,但它会强制重新启动动画。

在我的示例中,我添加和删除了<div id="animated">onclick

代码语言:javascript
复制
$('#animated').click(function() {

    /* Reference to the clicked element and toggle the .go class */
    var $div = $(this);
    $div.toggleClass('go');

    /* Start the animated gif */
    if ($div.hasClass('go')) {

        /* Create an <img> element and give it the animated gif as a src.  To 
           force a reload we add a date parameter to the URL */
        var img = document.createElement('img');
        img.src = "http://yoursite.com/animated.gif?p" + new Date().getTime();

        /* Once the image has loaded, set it as the background-image */
        $(img).load(function(){
            $div.css({backgroundImage: "url("+img.src+")"});
        });

    /* Remove the background-image */        
    } else {
       $div.css({backgroundImage: "none"});
    }
})

Demo of it正在运行。

票数 20
EN

Stack Overflow用户

发布于 2013-08-07 23:06:16

我发现你还可以在图片src的末尾添加一个?+Math.random(),它会重新加载.gif。

票数 7
EN

Stack Overflow用户

发布于 2011-09-27 20:16:22

您是否考虑过使用两次名为blink.gif和blink2.gif的相同图像,为它们添加两个类并在类之间切换?

代码语言:javascript
复制
<div id="face">
    <div id="eyes"></eyes>
</div>

.blink {
    background-image:url('blink.gif');
}

.blink2 {
    background-image:url('blink2.gif');
}

function MakeBlink()
{
   if ($('#eyes').hasClass('blink'))
   {
      $('#eyes').removeClass('blink').addClass('blink2');
   } else
   {
     $('#eyes').removeClass('blink2').addClass('blink');
   }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7568855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档