translate3d()导致jQueryhover/单击事件无法正确触发

在分析不同CSS动画类型的jQuery鼠标事件时,我注意到translate3d导致hover和其他事件无法正确触发。

在一个基本示例中,我从右到左为动画块列表设置动画。

在翻转时,我将hover的LI背景设置为GREEN。

注意:为webkit构建测试

HTML

  • content
  • content
  • ...

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显示非常错误的jQueryhover,而翻译是可以的。

任何人都有任何线索,为什么这是?

http://jsfiddle.net/jkusachi/j2PSw/2/

这是一个已知的问题。 当元素出现在可见鼠标光标下方时,Chrome不会通过移动或变为可见来调用元素的hover效果。

请检查: https : //code.google.com/p/chromium/issues/detail?id = 246304

当鼠标静止且目标在鼠标下方移动时,您是否期望触发hover? 仅当鼠标处于运动状态时才会发送事件,或者如果我没记错,则会单击一个按钮。 如果鼠标没有执行任何操作,则不会触发任何操作,包括hover。 事件基于用户输入,因此如果没有用户输入,则没有事件。

您可以看到,如果您在元素上来回缓慢移动鼠标,则hover状态将正常工作。 如果您不移动鼠标,似乎只会出现此问题。

也就是说,除非我错过了这个问题,所以请澄清我是否不理解。