浏览器有时会在CSS3转换期间忽略jQuery单击事件



当一个元素包含另一个正在通过CSS transition动画的元素时,点击事件偶尔不会触发。

测试用例:http://codepen.io/anon/pen/gbosy

我有一个布局,其中一系列的图像有字幕,显示在悬停。点击后,他们发射了一个相邻元素的.slideDown。它们本身很可能会被用户快速点击。这个问题在一个实时站点上比在codependency中更明显。

在代码依赖中,大约90%的点击被执行,而当CSS转换被禁用时,100%被执行。

欢迎提出任何建议。

我应该注意的是,这个问题在Chrome中最容易复制,在Safari中不太常见,在Firefox中更不常见。

我认为关键是禁用p元素中的鼠标事件:

p {
  pointer-events: none;
}

出现问题是因为点击是由mousedown + mouseup生成的,如果你在过渡的边缘操作,那么mousedown在一个元素中,而mouseup在另一个元素中(这不会产生点击)。

另一种方法(不完全相同,但大多数用户不会注意到它)是在鼠标向下操作,而不是单击

相关内容

  • 没有找到相关文章

最新更新