在分析不同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