【发布时间】:2012-11-29 18:31:06
【问题描述】:
好吧,这个给我带来了很多问题。
当使用 css3 -webkit-transform 样式与任何类型的 3d 旋转(例如 rotateY(30deg))时,将点击事件绑定到这个旋转的对象是非常不可靠的。
查看下面的示例代码或查看this fiddle(要查看小提琴中的不可靠性,请单击元素右侧)。此示例没有动画,但仍然受到影响。
html:
<div id='box1'>Click this box.</div>
css:
#box1{
-webkit-transform: rotateY(30deg);
}
jquery:
$('#box1').click(function(){
alert('clicked box 1');
});
我所说的“不可靠”是指点击事件并不总是被抛出(取决于你点击它的位置),有时事件根本不会被抛出(无论你在哪里点击它)。
有没有办法解决或避免这种情况,以便在旋转和动画时与 CSS3 元素一起使用?
更新:
在元素上使用 CSS 属性 'float:left' 似乎可以让它正确检测点击事件*不在运动中。有谁知道为什么 float 属性可以解决这个问题?
我的最终目标是让对象在运动时接收点击事件,但是,当我应用新的 CSS3 rotate3d 属性(实时,在另一个 jquery 事件上)给对象动画时,点击事件再次开始失败。
【问题讨论】:
-
添加
float:left;使其工作:jsfiddle.net/RyvtZ/4 -
感谢@PranavKapoor 的建议,这很有趣,你是怎么想到这个的?我仍然在过渡过程中遇到旋转对象的问题,所以这不是一个完整的解决方案
-
@JustinGingyMcDonald,如果您仍然有问题,请提供一个新的 jsFiddle,其中包含 您使用的动画类型,因为 OP 的动画在 Chrome 中对我来说可以正常工作。
-
@PranavKapoor,我也想知道您是如何得出这个解决方案的,但更重要的是,如果无法使用 float 属性,那么还有哪些其他属性可以使用?恕我直言,我很难找到解决这个有趣问题的方法。
-
解决此问题的另一种方法是将元素包装在一个容器中,并检测容器上的点击而不是旋转元素。
标签: jquery html css jquery-animate transform