当我关闭鼠标时,它立即变为原始标志。
$("#flag").hover(function(){
$(this).css({
'background': 'url("http://visionfi.pl/wp-content/uploads/2017/06/EN.png")',
'background-size':'cover',
'transition':'1 s'
});
}, function(){
$(this).css({
'background': 'url("http://visionfi.pl/wp-content/uploads/2017/06/PL.png")',
'background-size':'cover',
'transition':'1 s'
});
})
答案 0 :(得分:0)
尝试使用jQuery stop()
,如下所示:
$("#flag").hover(function(){
$(this).animate({
'background': 'url("http://visionfi.pl/wp-content/uploads/2017/06/EN.png")',
'background-size':'cover'
}, 1000);
}, function(){
$(this).stop(true,false).animate({
'background': 'url("http://visionfi.pl/wp-content/uploads/2017/06/PL.png")',
'background-size':'cover'
}, 1000);
})
这应该中断动画队列并重置它,为下一个准备好。
答案 1 :(得分:0)
您的代码几乎正常,只需将转换部分1 s
更改为1s
即可。这是一个语法问题:
$("#flag").hover(function(){
$(this).css({
'background': 'url("http://visionfi.pl/wp-content/uploads/2017/06/EN.png")',
'background-size':'cover',
'transition':'3s'
})}, function(){
$(this).css({
'background': 'url("http://visionfi.pl/wp-content/uploads/2017/06/PL.png")',
'background-size':'cover',
'transition':'3s'
})
})
div {
width: 100px;
height: 100px;
background: grey;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>DIV HOVER:</p>
<div id="flag"></div>
答案 2 :(得分:0)
CSS转换无法在转换过程中暂停或停止。如果我们在转换过程中重置转换持续时间,它就会停止最后一次转换。
并且JQUERY
不支持具有过渡效果的背景更改,就像CSS一样有效。 JQUERY
过渡将像fadeOut->change background Image->fadeIn
一样。那不好,对吗?
因此,您可以对这些mouseover
和mouseout
事件进行排队,以便一个接一个地触发它们。
注意:显然最近会触发mouseover
和mouseout
个事件(例如我们mouseover
后立即mouseout
,mouseout
只会在完成1秒的mouseover
事件。但我们没有其他选择。
var animating = false,
funqueue = [];
$("#flag").hover(function() {
funqueue.push(function() {
//console.log("mouseover");
$("#flag").css({
'background': 'url("http://visionfi.pl/wp-content/uploads/2017/06/EN.png")',
'background-size': 'cover',
'transition': '1s'
});
});
if (!animating) executeFunctionQueue();
}, function() {
funqueue.push(function() {
//console.log("mouseout");
$("#flag").css({
'background': 'url("http://visionfi.pl/wp-content/uploads/2017/06/PL.png")',
'background-size': 'cover',
'transition': '1s'
});
});
if (!animating) executeFunctionQueue();
});
function executeFunctionQueue() {
var funct = funqueue.shift();
if (funct) {
animating = true;
funct.call();
setTimeout(function() {
if (funqueue.length == 0) animating = false;
else
executeFunctionQueue();
}, 1000);
}
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="flag" style="height:300px; background:url('http://visionfi.pl/wp-content/uploads/2017/06/PL.png'); background-size:cover; transition:1s">
</div>
&#13;