我已经使用SVG图标为缩略图制作了一个非常简单的悬停动画。参见here。我使用的JS代码是这样的:
var elemRemoveAnim = null;
$('.vedio-thumb').hover(
function(){
$(this).find('.youtube-icon > .youtube-red')[0].classList.add('y-animated' , 'fadeInUp');
$(this).find('.youtube-icon > .youtube-white')[0].classList.add('y-animated' , 'fadeInUp');
},
function(){
removeVedioAnim($(this));
});
function removeVedioAnim(elem) {
elemRemoveAnim = elem;
setTimeout(function(){
elemRemoveAnim.find('.youtube-icon > .youtube-red')[0].classList.remove('y-animated' , 'fadeInUp');
elemRemoveAnim.find('.youtube-icon > .youtube-white')[0].classList.remove('y-animated' , 'fadeInUp');
}, 1000);
}如你所见,在延迟1000ms之后,我正在尝试删除动画类,这是因为如果你将鼠标悬停在上面并立即悬停(你必须非常快地做),你会注意到动画被卡住了,即白色箭头仍然只处于半过渡状态。从技术上讲,这是因为动画类被移除得太快了。
如果我在hover out函数中添加代码,这会使情况变得更糟。有没有更通用的解决方案来解决这个问题?
这个解决方案的另一个问题是,一旦你悬停了,然后如果你悬停了2-3次,速度真的很快,对于你悬停的2-3次,动画只会播放一次,简单地说,setTimeout函数将等待1秒来删除类。我想知道是否有更优雅的方法来做到这一点。
发布于 2016-01-11 23:32:12
$utube_white.one(“webkitAnimationEnd oAnimationEnd",$utube_white.one(){ $utube_red.get(0).classList.remove('y-animated‘,'fadeInUp');$utube_white.get(0).classList.remove('y-animated’,'fadeInUp');isLocked = false;});
https://stackoverflow.com/questions/34700987
复制相似问题