【问题标题】:translate3d() causing jQuery hover/click events to not fire correctlytranslate3d() 导致 jQuery 悬停/单击事件无法正确触发
【发布时间】:2013-08-28 19:23:53
【问题描述】:

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

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

在翻转时,我将悬停的 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 悬停,而 translate 没问题。

有人知道这是为什么吗?

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

【问题讨论】:

  • 我会注意到,在动画完成后,悬停对 translate3d 起作用。一旦动画完成并且您“重置”动画,如果您将鼠标移入和移出红色到白色区域,它似乎会触发 mouseenter/mouseleave,而不是当您的鼠标悬停在框上时......非常有趣...... .
  • 你有没有找到解决这个问题的方法?

标签: javascript jquery css css-transitions translate3d


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    您是否希望鼠标静止且目标在鼠标下方移动时触发悬停?如果我没记错的话,仅当鼠标移动或单击按钮时才会发送事件。如果鼠标没有做任何事情,那么什么都不会触发,包括悬停。事件是基于用户输入的,所以如果没有用户输入,就没有事件。

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

    也就是说,除非我遗漏了问题,所以如果我不理解,请澄清。

    【讨论】:

    • 我希望鼠标移动时会触发悬停。如果您在附加视频中看到,即使在鼠标移动期间,也不会使用 translate3d:stackoverflow-18496551.mov 触发悬停。代码本身非常基本,所以这是我的问题。它适用于过渡,但不是 translate3d。
    • 您使用的是什么特定的浏览器、版本和操作系统?我无法在 OS X 10.7 上的 Safari、Chrome、Firefox 或 IE (VM) 上复制它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多