【发布时间】:2016-03-31 04:46:52
【问题描述】:
我想要实现的行为是这样的:
在悬停/鼠标输入时,将背景图像从占位符更改为位置变化的 gif,以实现动画效果,然后在鼠标离开时返回占位符。
我的代码是
$('.filmstrip').mouseenter(function(){
var $that = $(this),
w = $that.width(),
fr = $that.attr('data-framerate');
$that.css('background-image','url('+$that.attr('data-gifurl')+')');
for ( var i = 1, n = $that.attr('data-ticks'); i <= n; ++i )
{
(function(j){
setTimeout(function(){
$that.css('background-position-x','-'+(w*j)+'px');
}, j*fr);
})(i);
}
$that.bind('mouseleave',function(){
$that.css('background-image','url('+$that.attr('data-placeholder')+')').css('background-position-x','0');
});
});
我遇到的错误是,如果 gif 还没有完成动画,那么
.css('background-position-x','0')
部分
$that.css('background-image','url('+$that.attr('data-placeholder')+')').css('background-position-x','0');
});
不起作用,因为背景位置仍在被动画移动。所以我需要一些方法来首先停止setTimeout 的东西,如果它没有完成运行。知道我该怎么做吗?
【问题讨论】:
标签: javascript jquery html