javascript - 交换后如何重新加载gif?

标签 javascript jquery css if-statement gif

我有一个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,因为不断读取值,从而再次替换它,但我只需要一次

更新

这是 fiddle 。这是正在发生的事情...想法是,当它们再次更改回来时,它们应该重播:https://jsfiddle.net/lj_tang/qynvg44b/11/

最佳答案

使用 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%;
}

关于javascript - 交换后如何重新加载gif?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38590921/

相关文章:

javascript - 如何将滚动条附加到 div 部分?

javascript - 如何使用 Jest 模拟直接导入的函数?

javascript - HTML 有序列表不正确显示子项

JavaScript 检测正在进行的 CSS 动画

javascript - 将事件类添加到导航中的 ul 列表

html - 在 html 中使用非标准字体

javascript - 无法在选择列表上触发更改事件

jQuery .slideToggle 不产生屏幕变化

javascript - 删除/标准化 Javascript/Jquery 中的重音符号

jquery - 在div中切割形状?