【问题标题】:How to reload the gif when exchanged?交换时如何重新加载gif?
【发布时间】:2016-11-30 03:55:05
【问题描述】:

我有一个 div,我有一个 gif 作为背景(计算机像汽车一样进入)。当scrollTop 处于特定数字时放置此 gif...如果用户继续滚动,我将背景切换为另一个 gif(计算机离开)。这是它的代码:

if (($(window).width() > 1700 && vistaEstandar.scrollTop > 4286 && vistaEstandar.scrollTop < 5171) || ($(window).width() > 1700 && document.documentElement.scrollTop > 4286 && document.documentElement.scrollTop < 5171)) {   

            $('#section6').removeClass('monitorEstandarAnimacion');
            $('#section6').addClass('monitorEstandarFinal');
        }
        else
        {
            $('#section6').removeClass('monitorEstandarAnimacion');
            $('#section6').removeClass('monitorEstandarFinal');
        } 

好的,现在,分配的类是包含背景的类

.monitorEstandarAnimacion
{
  background: url(../images/estandar/monitorEstandarEntrada.gif?q=) !important;
  background-size: cover !important;
  background-position: bottom !important;
  width: 100%;
}

.monitorEstandarFinal
{
  background: url(../images/estandar/monitorEstandarSalida.gif?q=) !important;
  background-size: cover !important;
  background-position: bottom !important;
  width: 100%;
}

背景切换有效。但是,当我向后滚动并再次添加类时,gif 应该重新开始,但事实并非如此。背景自动成为 gif 的最后一帧。这就像 gif 只工作一个(它只循环一次),但我希望它在每次切换发生时工作一次(因为它是制作的)

在这里可以找到与此非常相似的问题:Restart animated GIF as background-image

如果不是因为我正在使用滚动,那将是完美的,所以当试图实现他所说的时,即使 gif 开关就像一个魅力,它会在每次滚动发生时重新加载,而不仅仅是一次有意的。

如您所见,在 if 语句中建立了一个范围。在该范围内,gif 应该播放一次。不过,我注意到,每次滚动都可能会重复 gif,因为不断读取该值从而再次替换它,但我只需要它一次

更新

这是小提琴。这是正在发生的事情......这个想法是当它们再次变回时,它们应该重播:https://jsfiddle.net/lj_tang/qynvg44b/11/

【问题讨论】:

  • HTML 代码丢失,请将您拥有的所有内容添加到 jsFiddle 并给我发送链接。
  • @cyberbit 也可以通过滚动来完成吗?该用户使用了点击事件...不确定这是否适用于 if 语句,但我想达到相同的效果
  • @PauliusK。 jsfiddle.net/lj_tang/qynvg44b/9 有我的基本代码......虽然由于某种原因我无法上传图片

标签: javascript jquery css if-statement gif


【解决方案1】:

使用 jQuery 而不是 css 更改图像。 该版本将确保每次都有不同的 url。现在它强制加载!

var v = 0;
if (($(window).width() > 1700 && vistaEstandar.scrollTop > 4286 && vistaEstandar.scrollTop < 5171) || ($(window).width() > 1700 && document.documentElement.scrollTop > 4286 && document.documentElement.scrollTop < 5171)) {
    ++v;
    $('#section6').css('background-image', 'url(../images/estandar/monitorEstandarEntrada.gif?q='+v+')');
} else {
    ++v;
    $('#section6').css('background-image', 'url(../images/estandar/monitorEstandarSalida.gif?q='+v+')');
}

如果您在函数中运行上述代码,请将 ++v 放在 if 语句下。

而且最好不要在 css 中重复代码。

#section6 {
  background-size: cover;
  background-position: bottom;
  width: 100%;
}

【讨论】:

  • 谢谢,不重复代码的最佳实践,我的错。但是,我只是尝试过,它不会强制重新加载 gif
  • 现在确实可以使用了!我现在自己测试了 :) 忘了把版本放在 q 后面。现在每次都有不同的网址会发生什么。现在它强制加载!
  • 但如果是不同的 URL,则不会是图像。我的意思是,我找不到它,因为他的 URL 实际上并不存在......它给了我这个错误“加载资源失败:服务器响应状态为 404(未找到)”,这是有道理的,因为我们正在更改 URL 编辑:我的错,它找到图像并加载但只是第一次
  • 男人,我爱你!!!这很完美。您先生是个天才……希望我能学到很多东西!
  • 如果不是更麻烦,如果你能解释你做了什么......我看到你用数据图像做了一个条件......你救了我的一天先生。我今天必须把它交给我的老板
猜你喜欢
  • 1970-01-01
  • 2019-10-26
  • 2013-10-26
  • 1970-01-01
  • 2016-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-02
相关资源
最近更新 更多