在分析不同CSS动画类型的jQuery鼠标事件时,我注意到translate3d导致悬停和其他事件无法正确触发。translate3d()导致jQuery悬停/点击事件无法正确触发
在一个基本的例子中,我从右向左设置了一个块列表的动画。
在翻转时,我将悬停的LI背景设置为绿色。
注:测试是专门为WebKit的
HTML
<div class="container">
<ul>
<li>content</li>
<li>content</li>
...
</ul>
</div>
CSS
.container{
position: absolute;
left: 600px;
top: 0;
}
.container ul{
list-style: none;
width: 9999px;
}
.container ul li{
width: 200px;
height: 400px;
float: left;
background: red;
margin: 4px;
}
.animate-3d{
-webkit-transition: -webkit-transform 10s linear;
-webkit-transform: translate3d(-6000px, 0px, 0px)
}
.animate-transition{
transition: left 10s linear;
left: -6000px;
}
jQuery的
$('.event').bind('click', function(){
$('.container').addClass('animate-3d');
});
$('.event-transition').bind('click', function(){
$('.container').addClass('animate-transition');
});
$('li').bind('mouseenter mouseleave', function(e){
if(e.type == 'mouseenter')
$(this).css('background', 'green');
else
$(this).css('background', 'red');
});
正如你可以在附带的小提琴中看到的,translate3d显示了非常符合jQuery的盘旋,而翻译是好的。
任何人都有任何线索,为什么这是?
http://jsfiddle.net/jkusachi/j2PSw/2/
我会注意到,悬停为translate3d工作动画完成后。 一旦动画完成并且您“重置”了动画,如果您将鼠标悬停在白色区域并将其拖入白色区域,似乎只会在您的鼠标悬停在框上时触发mouseenter/mouseleave ...挺有意思的... – jkusachi
你有没有找到解决这个问题的方法? – luwes